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

时间:2011-09-11 22:15:41

标签: regex

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

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

结束

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

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

例如:

dbo.functionName_fn - Match

dbo._fn_functionName - No Match

dbo.functionName_fn_blah - No Match

5 个答案:

答案 0 :(得分:25)

如果您要在较大的文字中搜索匹配内容,则不希望像其他响应者所说的那样使用^$;那些匹配文本的开头和结尾。试试这个:

\bdbo\.\w+_fn\b

\b是一个word boundary:它匹配一个位置,该位置前面有一个单词字符,后面没有一个,或者后跟一个单词字符,前面没有一个字符。这个正则表达式将在任何这些字符串中找到你要找的东西:

dbo.functionName_fn
foo dbo.functionName_fn bar
(dbo.functionName_fn)

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

foodbo.functionName_fnbar

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

答案 1 :(得分:19)

^dbo\..*_fn$

这对你有用。

答案 2 :(得分:6)

嗯,简单的正则表达式就是这样:

/^dbo\..*_fn$/

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

答案 3 :(得分:1)

\bdbo\..*fn

我正在查看特定库的大量java代码:car.csclh.server.isr.businesslogic.TypePlatform(虽然我当时只知道carPlatform。不幸的是,这里没有其他建议对我有用,所以我想我会发布这个。

以下是我以前找到它的正则表达式:

\bcar\..*Platform

答案 4 :(得分:0)

Scanner scanner = new Scanner(System.in);
String part = scanner.nextLine();
String line = scanner.nextLine();

String temp = "\\b" + part +"|"+ part + "\\b";
Pattern pattern = Pattern.compile(temp.toLowerCase());
Matcher matcher = pattern.matcher(line.toLowerCase());

System.out.println(matcher.find() ? "YES":"NO");

如果需要确定此文本中的任何单词是否以序列开头或结尾。您可以使用此正则表达式\ bsubstring | substring \ b 任何子字符串 substring 任何内容 任何子串任何东西