2012-08-02 42 views
0

我想檢查給定的單詞(說matchword)是在外部源的句子。在C#中,我打算使用低於正則表達式模式來覆蓋這些字邊界情景(匹配字應該是一個單詞可以用所有可能的句子或單詞分隔字符來分隔)。 matchword可以在句子的開始/中間/結尾,或者有時它可以是字符串的精確匹配。正則表達式如何檢查字邊界條件unicode

應該覆蓋多語言文本,而且不區分大小寫。

([\s+,"'\(\[])matchword([\s+;\?\.;,"'\)\]]) 

一個例子,

假設我的速配關鍵字是 「測試」(不帶引號)

和樣品的句子是:

這是試驗,細繩 - 結果 - 真

This is testing - Result - false

這是testest - 結果 - 假

測試 - 結果 - 真

回答

1

嘗試\btest\b其中\ b表示起點,也一個字的結束,或者你可以做(?i)\btest\b,使其不區分大小寫

+0

感謝Jason的回覆。 – Mahender 2012-08-02 22:56:58

1

我猜負環視可能足以在你的情況:

(?<!\w)test(?!\w) 

這意味着:這個詞不測試之前或之後一個\ w字符。

如果你想表達的情況下,C#不敏感的,你在下面的例子中使用的標誌RegexOptions.IgnoreCase,如:

Regex.IsMatch(subjectString, @"(?<!\w)test(?!\w)", RegexOptions.IgnoreCase) 

Here解釋什麼更好環視是怎麼一回事。無論如何,涉及\b的上述答案在你的情況下要好得多。只要把這個概念作爲你可能想要更深入的東西來更好地掌握正則表達式。它的強大之處在於可以選擇更復雜的表達方式,將其包含在前瞻或後視羣組中。在你的情況下,這只是一種浪費。

+0

感謝迭戈的答覆。你介意詳細說明這個正則表達式嗎? – Mahender 2012-08-02 22:57:48