2014-01-17 37 views
5

也許我在這裏做錯了什麼,但對我來說,當我嘗試將字符串「放射檢查眼睛檢測異物」與正則表達式「\ b * ct \ b「在regexr.com然後我發現沒有匹配,但是當我嘗試使用C#程序做同樣的事情時,它匹配。 C#代碼如下。我在做/檢查有問題嗎?C#正則表達式匹配,但不是Regexr.com

string desc = "radiologic examination eye detect foreign body"; 
string regex = "\\b" + "*ct" + "\\b"; 
if (Regex.IsMatch(desc, regex)) 
{ 
    String x = Regex.Replace(desc, regex, " " + "ct" + " ").Trim(); 
    Console.WriteLine(x); 
} 

在此先感謝!

+0

你想過濾掉什麼?一個字裏只有字母「ct」? – mattytommo

+0

你是否在檢測詞前匹配?另外,如果它的工作是什麼問題?:-) – Srb1313711

+0

不,我想「不匹配」。 C#代碼最終匹配「ct」,但如果您在regexr.com上嘗試相同的事情,則它不匹配任何內容。 –

回答

3

它是匹配的,因爲你在那裏有一個星號。

星號表示:

匹配前面的字符零次或多次

所以它不匹配\b可言,但仍滿足上述條件。

刪除這一點,它不再匹配:

string regex = "\\b" + "ct" + "\\b"; 

至於爲什麼它不匹配Regexr,我不知道,但對我來說並不實際匹配reFiddle

+1

適用於Refiddle。謝謝! –

+0

@mattytommo - 回到堆棧;) –

+0

@DarrenDavies不能遠離一點正則表達式隊友:D – mattytommo

1

C#可能會將\b*解釋爲0個或更多個單詞邊界。

由於這是一個奇怪的定義,也許正則表達式不允許構造並將其視爲\b。例如,如果它使用不同的正則表達式後端並轉換爲C#,則可能是這種情況。

你確定你不是指\b.*ct\b這將是一個字界,其後是任何數量的字符後跟ct和另一個字邊界?

+0

雅實際上正則表達式不是由我製作的。它帶着我正在處理的一組詞彙進來。謝謝! –

相關問題