是否可以在 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'
最佳答案
Is it possible to use regex character class subtraction in some way in GNU sed, GNU awk, GNU grep, or anywhere else from bash?
不,不是那些工具/正则表达式实现。
大多数(流行的)语言不支持这个。 Java 有一种方法可以做到这一点:[0-9&&[^25]]
(匹配除 '2'
和 '5'< 之外的任何 (ASCII) 数字
),但我知道没有其他实现支持这一点。
要么像 Ignacio 已经建议的那样,使用否定的前瞻性 (?![25])[0-9]
,要么使用“艰难的方式”:[1346-9 ]
参见:
关于c++ - 正则表达式减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10812016/