Начало сопоставления регулярных выражений и конечные строки
Кажется, что это должно быть тривиально, но я не так хорош в регулярных выражениях, и это, похоже, нелегко для Google.
Мне нужно регулярное выражение, которое начинается со строки "dbo". и заканчивается строкой '_fn'
Насколько мне известно, меня не волнует, какие символы находятся между этими двумя строками, если только начало и конец верны.
Это соответствует функциям в базе данных SQL-сервера.
Например:
dbo.functionName_fn - Match
dbo._fn_functionName - No Match
dbo.functionName_fn_blah - No Match
Спасибо!
Ответы
Ответ 1
Если вы ищете хиты в более крупном тексте, вы не хотите использовать ^
и $
, как говорили некоторые другие респонденты; они соответствуют началу и концу текста. Вместо этого попробуйте:
\bdbo\.\w+_fn\b
\b
является границей слов: он соответствует позиции, которой предшествует символ слова, а за ней не следует, или следует символ слова и которому не предшествует одно. Это регулярное выражение найдет то, что вы ищете в любой из этих строк:
dbo.functionName_fn
foo dbo.functionName_fn bar
(dbo.functionName_fn)
... но не в этом:
foodbo.functionName_fnbar
\w+
соответствует одному или нескольким "символам слов" (буквы, цифры или _
). Если вам нужно что-то более инклюзивное, вы можете попробовать \S+
(один или несколько символов без пробелов) или .+?
(один или несколько символов, кроме строк, без жадности). Нежелательный +?
не позволяет случайно сопоставить что-то вроде dbo.func1_fn dbo.func2_fn
, как будто это всего лишь один удар.
Ответ 2
^dbo\..*_fn$
Это должно сработать.
Ответ 3
Ну, простое регулярное выражение:
/^dbo\..*_fn$/
Было бы лучше, однако, использовать функциональность манипуляции с строками любого языка программирования, который вы используете, чтобы срезать первые четыре и последние три символа строки и проверить, являются ли они тем, что вы хотите.
Ответ 4
\bdbo\..*fn
Я просматривал тонну java-кода для конкретной библиотеки: car.csclh.server.isr.businesslogic.TypePlatform
(хотя я знал только car
и Platform
в то время). К сожалению, ни один из других предложений здесь не работал у меня, поэтому я решил, что опубликую это.
Вот регулярное выражение, которое я использовал для его поиска:
\bcar\..*Platform