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