Подтвердить что ты не робот

Начало сопоставления регулярных выражений и конечные строки

Кажется, что это должно быть тривиально, но я не так хорош в регулярных выражениях, и это, похоже, нелегко для Google.

Мне нужно регулярное выражение, которое начинается со строки "dbo". и заканчивается строкой '_fn'

Насколько мне известно, меня не волнует, какие символы находятся между этими двумя строками, если только начало и конец верны.

Это соответствует функциям в базе данных SQL-сервера.

Например:

dbo.functionName_fn - Match

dbo._fn_functionName - No Match

dbo.functionName_fn_blah - No Match

Спасибо!

4b9b3361

Ответ 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