簡體   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