我需要一個正則表達式,它只會查找整個字符串與我的查詢匹配的匹配項。如何將整個字符串與正則表達式匹配?
舉例來說,如果我做了一個名爲「紅十月」的電影搜索我只是想匹配,準確的標題(不區分大小寫),但不能匹配,如「獵殺紅色十月」稱號。不太確定我知道如何做到這一點。有人知道嗎?
謝謝!
我需要一個正則表達式,它只會查找整個字符串與我的查詢匹配的匹配項。如何將整個字符串與正則表達式匹配?
舉例來說,如果我做了一個名爲「紅十月」的電影搜索我只是想匹配,準確的標題(不區分大小寫),但不能匹配,如「獵殺紅色十月」稱號。不太確定我知道如何做到這一點。有人知道嗎?
謝謝!
試試下面的正則表達式:
^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