2012-05-30 63 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>