繁体   English   中英

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

[英]How do I match an entire string with a regex?

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

例如,如果我搜索名称为“红色十月”的电影,我只想匹配该确切标题(不区分大小写),但不匹配“寻找红色十月”之类的标题。 不太确定我知道该怎么做。 有人知道吗?

谢谢!

试试下面的正则表达式:

^Red October$

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

通常,使用默认设置, ^$锚是确保正则表达式匹配整个字符串的好方法。

不过有几点需要注意:

如果您的正则表达式中有更改,请务必将您的正则表达式包含在一个非捕获组中,然后再用^$包围它:

^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

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

最简单的方法:

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

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

^Red October$

如果字符串可能包含正则表达式元符号( . { } ( ) $等),我建议使用

^\QYourString\E$

\Q开始引用所有字符,直到\E 否则,正则表达式可能不合适甚至无效。 如果语言使用正则表达式作为字符串参数(如我在示例中看到的),则应使用双斜杠:

^\\QYourString\\E$

希望这个提示可以帮助某人。

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

要使正则表达式不区分大小写,您可以实施涉及字符类的黑客。 很多角色类。

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

对不起,但这有点不清楚。

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

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

如果我只想捕获一次字符串中的字母减去 a 并且可以使用 myRegex.IsMatch() 进行检查,您可以这样做

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM