2008-10-17 47 views
2

我想要做的是檢查相鄰的重複單詞,但即使在中間有標點符號也是如此。用於標點符號的重複單詞的正則表達式

例如:

Vivamus Vivamus diam, diam, Vivamus Vivamus diam, diam Vivamus 

這裏應該有4次不同的命中。

我想不通爲什麼這是行不通的;有人可以解釋爲什麼,並告訴我什麼是正確的代碼應該是什麼?

謝謝。

(\w*(?:[ ,\.])*?)\1 

PS:由於混淆,原因,我不會說我使用Perl的引擎。

回答

8

(?:是一個非捕獲括號,這意味着它不會存儲匹配。您將需要使用捕獲括號。

(\w+)\W+\1 
+0

NNNEEeeeeAAAAAAAHhhhhhhhhh ..... NOT WORD !!!!而已! 謝謝! – Keng 2008-10-17 20:59:25

0

原始表達式不會爲標點符號創建單獨的捕捉,但在第一次捕捉中包含捕捉到的標點符號。這意味着它會發現的東西,如:

diam, diam, really, really, twice. 

但你是不是在標點符號很感興趣,所以tj111的解決方案正常工作,即使「(?)是一個非捕獲括號」的解釋是有點...不完整?引用的評論是準確的,但這不是整體正則表達式失敗的原因。

1

[[\w|\W]+ ]+爲我工作。擊穿:

\w:字字符

\W:非文字字符

[\w|\W]+:每個字符可以由單詞或非字字符並重復1次或多次

[[\w|\W]+ ]+:.. 。在某個時間點附加空間,全部發生1次或多次

相關問題