讓我解釋我面臨的實際問題。使用正則表達式解析錯誤
當我的SearchString在爲C +,正則表達式的設置以下的罰款。 然而,當我搜索字符串是C++,它引發了我的錯誤,說明 -
parsing "C++" - Nested quantifier +.
任何人都可以讓我知道如何讓過去這個錯誤?
RegExp = new Regex(Search_Str.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase);
讓我解釋我面臨的實際問題。使用正則表達式解析錯誤
當我的SearchString在爲C +,正則表達式的設置以下的罰款。 然而,當我搜索字符串是C++,它引發了我的錯誤,說明 -
parsing "C++" - Nested quantifier +.
任何人都可以讓我知道如何讓過去這個錯誤?
RegExp = new Regex(Search_Str.Replace(" ", "|").Trim(), RegexOptions.IgnoreCase);
首先,我相信你會通過尋找一些正則表達式的教程,而不是在這裏問你目前階段學習更多。
要回答你的問題,我想指出的是,+
是在正則表達式量詞,並指前一個字符1次或多次(或組),使C+
將匹配至少1 C
,這意味着C
會匹配,CC
將匹配,CCC
將匹配等。您在C+
的搜索實際上只匹配C
!
在正則表達式C++
會給你一個錯誤,至少在C#。您不會與其他正則表達式風格,包括JGsoft,Java和PCRE(++
是possessive quantifier在那些口味)。
那麼,該怎麼辦?您需要轉義+
字符,以便您的搜索將查找文字+
字符。一個簡單的方法是在+
:\+
之前添加反斜槓。另一種方法是將+
置於方括號內。
這就是說,你可以使用:
C\+\+
或者......
C[+][+]
爲了尋找C++
。現在,既然你有兩次相同的字符,你可以使用{n}
(其中n
是出現的次數)來表示的最後一個字符出現的次數,自何處:
C\+{2}
或者......
C[+]{2}
應該給出相同的結果。
我忍不住通知@鬼的答案是錯的。
這個片段是錯誤的:
Regex regex = new Regex(@"C+\+");
因爲第一+沒有逃脫。所以意思仍然是「一個或多個C
個字符,後跟一個加號」。正確的形式是@"C\+\+"
那麼,你沒有發佈正則表達式:) – usr