正则表达式匹配开始和结束字符串

Eri*_*ham 33 regex

这似乎应该是微不足道的,但我对正则表达式并不是很好,这对谷歌来说似乎并不容易.

我需要一个以字符串'dbo'开头的正则表达式.并以字符串'_fn'结尾

就我而言,我不关心这两个字符串之间的字符是什么,只要开头和结尾都是正确的.

这是为了匹配SQL Server数据库中的函数.

例如:

dbo.functionName_fn - Match

dbo._fn_functionName - No Match

dbo.functionName_fn_blah - No Match
Run Code Online (Sandbox Code Playgroud)

Ala*_*ore 27

如果你在更大的文本中搜索命中,你不想使用^,$正如其他一些响应者所说的那样; 那些匹配文本的开头和结尾.试试这个:

\bdbo\.\w+_fn\b
Run Code Online (Sandbox Code Playgroud)

\b是一个单词边界:它匹配一个位置,该位置前面有一个单词字符,后面没有一个单词,或者后跟一个单词字符,前面没有一个单词.这个正则表达式将在以下任何字符串中找到您要查找的内容:

dbo.functionName_fn
foo dbo.functionName_fn bar
(dbo.functionName_fn)
Run Code Online (Sandbox Code Playgroud)

......但不在这一个:

foodbo.functionName_fnbar
Run Code Online (Sandbox Code Playgroud)

\w+匹配一个或多个"单词字符"(字母,数字或_).如果你需要更具包容性的东西,你可以尝试\S+(一个或多个非空格字符)或.+?(除了换行之外的任何字符中的一个或多个,非贪婪).非贪婪+?可以防止它意外地匹配某些东西,就像dbo.func1_fn dbo.func2_fn它只是一次击中一样.


Dan*_*ite 20

^dbo\..*_fn$
Run Code Online (Sandbox Code Playgroud)

这应该对你有用.

  • @eawedat,`\ .`用于点本身,`.*`用于任何字符的无界序列. (4认同)
  • 仅供参考:^表示字符串的开头,$表示字符串的结尾. (3认同)

lon*_*day 6

好吧,简单的正则表达式是这样的:

/^dbo\..*_fn$/
Run Code Online (Sandbox Code Playgroud)

但是,最好使用您正在使用的任何编程语言的字符串操作功能来切掉字符串的前四个和后三个字符,并检查它们是否是您想要的.