正则表达式有两个问题:
egrep (如POSIX扩展的正则表达式一样)根本不支持先行或先行。[(?!5)[:digit:]]也是一个等效于的单个字符类[[:digit:]()!?]。(在字符类中没有任何特殊含义。不幸的是egrep,也不支持否定的命名字符类(如中所述[[:^digit:]])。
剩下的只有两个选择:
手动计算设置差异并明确列出:
egrep '[0-46-9]+'
Run Code Online (Sandbox Code Playgroud)切换到PCRE并使用Perl样式的正则表达式
grep -P '[^\D5]+'
Run Code Online (Sandbox Code Playgroud)
(使用双重否定并设置并集来计算集合差的技巧:我们匹配不是非数字或的任何字符5)或
grep -P '(?:(?!5)\d)+'
Run Code Online (Sandbox Code Playgroud)
(前瞻性版本,已修复)。
| 归档时间: |
|
| 查看次数: |
60 次 |
| 最近记录: |