2013-03-01 23 views
2

我想有一些Perl的正則表達式來代替,像這樣的任何非單詞字符非單詞字符:Perl的正則表達式替換除了::

s/\W//g; 

然而,如果有下列海誓山盟像::兩個冒號,我不想取代那些。有誰知道如何做到這一點?謝謝!

+0

如果什麼有3個冒號? – ikegami 2013-03-01 08:15:09

回答

8

/\W//[^\w]/,所以/[^\w:]/會刪除除冒號以外的每個非單詞字符。

您也想刪除孤冒號(/(?<!:):(?!:)/),所以最終的解決方案是

s/[^\w:]|(?<!:):(?!:)//g; 
+0

太棒了!這正是我正在尋找的。謝謝 :) – srchulo 2013-03-01 10:36:56