如何将整个字符串与正则表达式匹配?
我需要一个正则表达式,它只会查找整个字符串与我的查询匹配的匹配项。如何将整个字符串与正则表达式匹配?
举例来说,如果我做了一个名为“红十月”的电影搜索我只是想匹配,准确的标题(不区分大小写),但不能匹配,如“猎杀红色十月”称号。不太确定我知道如何做到这一点。有人知道吗?
谢谢!
试试下面的正则表达式:
^Red October$
默认,正则表达式区分大小写。 ^
标志着匹配文本的开始和$
的结束。
对不起,但这有点不清楚。
从我读,你想要做简单的字符串进行比较。你不需要这样的正则表达式。
string myTest = "Red October";
bool isMatch = (myTest.ToLower() == "Red October".ToLower());
Console.WriteLine(isMatch);
isMatch = (myTest.ToLower() == "The Hunt for Red October".ToLower());
我需要使用正则表达式的原因是我使用它在MongoDB中进行搜索,我需要它是不区分大小写的,只能用正则表达式来完成。 – Micah 2010-11-08 11:52:18
您需要附上您的正则表达式中^
(字符串的开始)和$
(字符串的结尾):
^Red October$
使用^
和$
修饰符来表示,其中正则表达式位于相对于字符串的开头和结尾:
Regex.Match("Red October", "^Red October$"); // pass
Regex.Match("The Hunt for Red October", "^Red October$"); // fail
一般情况下,并使用默认设置,^
和$
锚的好方法确保正则表达式匹配整个字符串。
几个注意事项,但:
如果你在你的正则表达式交替,以^
和$
周边之前一定要附上你的正则表达式在非捕获组:
^foo|bar$
是当然不同于
^(?:foo|bar)$
此外,^
和$
罐采取不同的含义(开始线而不是开始/ 串的端部/端)如果某些选项被设置。在支持正则表达式的文本编辑器中,这通常是默认行为。在某些语言中,尤其是Ruby,这种行为甚至无法关闭。
因此,存在另一组在整个字符串的开始/结束保证只有匹配锚:
\A
在字符串的开始匹配。在字符串的末尾或最终换行符之前
\Z
匹配。
\z
在字符串的最后比赛。
但并非所有的语言都支持这些定位符,最值得注意的是JavaScript。
这是最有用的答案 – 2015-01-23 14:18:59
我知道这可能有点晚,以回答这个问题,但也许它会派上用场。
最简单的方法:
var someString = "...";
var someRegex = "...";
var match = Regex.Match(someString , someRegex);
if(match.Success && match.Value.Length == someString.Length){
//pass
} else {
//fail
}
匹配整个字符串可以^
完成,并且在$
以前的答案是说。
为了使正则表达式不区分大小写,可以实现涉及字符类的hack。 A 批号的字符类。
^[Rr][Ee][Dd] [Oo][Cc][Tt][Oo][Bb][Ee][Rr]$
你可以像本例,如果我只是想赶上一次在字符串中的字母减去一个,它可以与myRegex.IsMatch()来检查
^[^ E] [e] {1} [^ e] $
为什么你需要一个简单的'string.Contains'工作的东西的正则表达式? – Oded 2010-11-08 11:50:39
我需要使用正则表达式的原因是我使用它在MongoDB中进行搜索,我需要它是不区分大小写的,只能用正则表达式执行 – Micah 2010-11-08 12:01:16
为什么不将数据转换(on-fly)到小写字母和小写字符串用于搜索? – greenoldman 2010-11-08 12:21:28