[英]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.