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

我需要一个正则表达式,它只会查找整个字符串与我的查询匹配的匹配项。

例如,如果我搜索名称为“红色十月”的电影,我只想匹配确切的标题(不区分大小写),但不匹配“红色十月寻宝”这样的标题。 不太确定我知道如何做到这一点。 有人知道吗?

谢谢!

尝试下面的正则表达式:

 ^Red October$ 

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

一般来说,使用默认设置, ^$ anchor是确保正则表达式匹配整个字符串的好方法。

但有几点需要注意:

如果在正则表达式中有交替,请确保将正则表达式包含在非捕获组中,然后使用^$

 ^foo|bar$ 

当然不同于

 ^(?:foo|bar)$ 

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

因此,还有一组锚只能保证在整个字符串的开始/结尾匹配:

\A匹配字符串的开头。

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

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

但并不是所有的语言都支持这些锚,特别是JavaScript。

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

 Regex.Match("Red October", "^Red October$"); // pass Regex.Match("The Hunt for Red October", "^Red October$"); // fail 

你需要把你的正则表达式放在^ (字符串的开头)和$ (字符串的结尾):

 ^Red October$ 

我知道这可能有点迟了,但也许这会对其他人来说很方便。

最简单的方法:

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

对不起,但有点不清楚。

从我读的,你想做简单的字符串比较。 你不需要这样的正则表达式。

 string myTest = "Red October"; bool isMatch = (myTest.ToLower() == "Red October".ToLower()); Console.WriteLine(isMatch); isMatch = (myTest.ToLower() == "The Hunt for Red October".ToLower()); 

匹配整个字符串可以用^$来完成,如前面的答案中所述。

为了使正则表达式不区分大小写,可以实现一个涉及字符类的hack。 很多角色类。

 ^[Rr][Ee][Dd] [Oo][Cc][Tt][Oo][Bb][Ee][Rr]$ 

你可以这样做例如,如果我只想捕捉一次字母减去一个字符串,它可以检查与myRegex.IsMatch()

^ [^ e] [e] {1} [^ e] $