是否可以在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 :(得分:3)
这样做的方法是使用负面预测,但并非所有正则表达式引擎都支持它们。
>>> re.match(r'(?![25])[0-9]', '2')
>>> re.match(r'(?![25])[0-9]', '3')
<_sre.SRE_Match object at 0x25108b8>
答案 1 :(得分:3)
是否可以在GNU sed,GNU awk,GNU grep或其他任何来自bash的地方以某种方式使用正则表达式字符类减法?
不,不是那些工具/正则表达式实现。
大多数(流行)语言不支持此功能。 Java有一种方法可以做到这一点:[0-9&&[^25]]
(匹配除'2'
和'5'
之外的任何(ASCII)数字),但我知道没有其他实现支持这一点。
使用负面预测(?![25])[0-9]
,正如Ignacio已经建议的那样,或者是“艰难的方式”:[1346-9]
见: