我需要一个仅在整个字符串与我的查询匹配的地方找到匹配项的正则表达式。
例如,如果我搜索名称为“红色十月”的电影,我只想匹配该确切标题(不区分大小写),而不匹配“狩猎红色十月”之类的标题。不太确定我知道该怎么做。有人知道吗
谢谢!
我需要一个仅在整个字符串与我的查询匹配的地方找到匹配项的正则表达式。
例如,如果我搜索名称为“红色十月”的电影,我只想匹配该确切标题(不区分大小写),而不匹配“狩猎红色十月”之类的标题。不太确定我知道该怎么做。有人知道吗
谢谢!
string1.Equals(string2, StringComparison.OrdinalIgnoreCase);
Answers:
尝试以下正则表达式:
^Red October$
默认情况下,正则表达式区分大小写。该^
标记的开始匹配的文本和$
结束。
通常,使用默认设置^
和$
锚点是确保正则表达式匹配整个字符串的好方法。
不过,请注意以下几点:
如果您的正则表达式有替换,请确保在将正则表达式包含在一个非捕获组中之前,再使用^
和$
:
^foo|bar$
当然不同于
^(?:foo|bar)$
另外,如果设置了某些选项,^
并且$
可以具有不同的含义(行的开始/结束而不是string的开始/结束)。在支持正则表达式的文本编辑器中,这通常是默认行为。在某些语言中,尤其是Ruby,甚至无法关闭此行为。
因此,有另一组锚保证仅在整个字符串的开头/结尾匹配:
\A
在字符串开头匹配。
\Z
在字符串末尾或最后一个换行符之前匹配。
\z
在字符串的末尾匹配。
但并非所有语言都支持这些锚点,最著名的是JavaScript。
我知道回答这个问题可能有点晚了,但也许对其他人来说会很方便。
最简单的方法:
var someString = "...";
var someRegex = "...";
var match = Regex.Match(someString , someRegex );
if(match.Success && match.Value.Length == someString.Length){
//pass
} else {
//fail
}
您需要将正则表达式包含在^
(字符串的开头)和$
(字符串的结尾)中:
^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());
如果我只想捕捉一次字母减去字符串中的a,就可以像这样做,可以使用myRegex.IsMatch()进行检查。
^ [^ e] [e] {1} [^ e] $
string.Contains
工作?