2012-05-30 57 views
1

是否有可能在GNU sed,GNU awk,GNU grep或bash中的任何其他地方以某種方式使用正則表達式字符類減法?正則表達式減法

C++ 11支持它嗎?

支持此功能的地方?除此之外,我找不到任何參考文獻:http://msdn.microsoft.com/en-us/library/20bw873z.aspx(底部)。

更具體:什麼是對所有的數字轉換,除了2和5星號的最好辦法,像

sed -re 's/[0-9-[25]]/*/g'

+0

什麼是目標語言? C++? C#?每種語言對正則表達式都有不同程度的支持。 – nhahtdh

+0

bash和C++ 11。 «bash»也意味着sed,grep,tr,awk ... – gluk47

回答

2

是否有可能從慶典用在GNU某種方式的sed,awk的GNU,GNU grep的正則表達式字符類減法,或其他地方?

不,不是那些工具/正則表達式實現。

大多數(流行)語言不支持這一點。 Java有辦法做到這一點:[0-9&&[^25]](匹配任何(ASCII)數字,除了'2''5'),但我知道沒有其他的實現支持這一點。

要麼使用負前瞻​​,作爲伊格納西奧已經建議,或做 「辛苦」:[1346-9]

參見:

+0

謝謝你,你的鏈接非常有趣。 – gluk47

+0

不客氣@ gluk47。 –

2

做到這一點的方法是負向前看符號,但並非所有的正則表達式引擎支持他們。

>>> re.match(r'(?![25])[0-9]', '2') 
>>> re.match(r'(?![25])[0-9]', '3') 
<_sre.SRE_Match object at 0x25108b8>