如何将整个字符串与正则表达式匹配?

Mic*_*cah 69 .net c# regex

我需要一个只能找到整个字符串与我的查询匹配的匹配的正则表达式.

例如,如果我搜索名为"Red October"的电影,我只想匹配那个确切的标题(不区分大小写),但不匹配"The Hunt For Red October"等标题.不太确定我知道怎么做.谁知道?

谢谢!

Pie*_*kel 91

请尝试以下正则表达式:

^Red October$
Run Code Online (Sandbox Code Playgroud)

默认情况下,正则表达式区分大小写.该^标记匹配的文本,并开始$结束.


Tim*_*ker 31

一般情况下,以默认设置,^$锚确保一个正则表达式的整个字符串相匹配的好方法.

但有几点需要注意:

如果你在你的正则表达式有交替,一定要与周围的前包围在非捕获组您正则表达式^$:

^foo|bar$
Run Code Online (Sandbox Code Playgroud)

当然不同于

^(?:foo|bar)$
Run Code Online (Sandbox Code Playgroud)

此外,^$可以采取不同的含义(开始/结束线代替的开始/结束的字符串)如果某些选项被设置.在支持正则表达式的文本编辑器中,这通常是默认行为.在某些语言中,尤其是Ruby,甚至无法关闭此行为.

因此,有另一组锚定保证仅匹配整个字符串的开头/结尾:

\A 匹配字符串的开头.

\Z 在字符串末尾或最后一个换行符之前匹配.

\z 在字符串的最后匹配.

但并非所有语言都支持这些锚点,尤其是JavaScript.

  • 这是最有帮助的答案 (2认同)

Tim*_*son 17

使用^$修饰符表示正则表达式模式相对于字符串的开头和结尾的位置:

Regex.Match("Red October", "^Red October$"); // pass
Regex.Match("The Hunt for Red October", "^Red October$"); // fail
Run Code Online (Sandbox Code Playgroud)


小智 13

我知道回答这个问题可能有点晚了,但也许对其他人会派上用场。

最简单的方法:

var someString = "...";
var someRegex = "...";
var match = Regex.Match(someString , someRegex );
if(match.Success && match.Value.Length == someString.Length){
    //pass
} else {
    //fail
}
Run Code Online (Sandbox Code Playgroud)

  • 恕我直言,这比公认的答案简单。但它是一种替代方法。 (2认同)

Ant*_*lev 8

你需要将你的正则表达式包含在^(字符串的开头)和$(字符串的结尾)中:

^Red October$
Run Code Online (Sandbox Code Playgroud)