Regex 不同工具的正则表达式语法之间有什么区别?
不同的工具实现正则表达式的方式不同。例如,要匹配“foo”或“bar”:Regex 不同工具的正则表达式语法之间有什么区别?,regex,sed,awk,grep,gnu,Regex,Sed,Awk,Grep,Gnu,不同的工具实现正则表达式的方式不同。例如,要匹配“foo”或“bar”: printf“%s\n”foo bar baz food|grep-o'\' printf“%s\n”foo bar baz food | awk'/\/' printf“%s\n”foo bar baz food | sed-n'/\/p' printf“%s\n”foo bar baz food|sed-nr'/\/p' 这些差异记录在哪里?得分!我很高兴找到了这个页面: 14.8正则表达式语法 Gnulib支持许
printf“%s\n”foo bar baz food|grep-o'\'
printf“%s\n”foo bar baz food | awk'/\/'
printf“%s\n”foo bar baz food | sed-n'/\/p'
printf“%s\n”foo bar baz food|sed-nr'/\/p'
这些差异记录在哪里?得分!我很高兴找到了这个页面:
14.8正则表达式语法 Gnulib支持许多不同类型的正则表达式;尽管底层功能相同或相同,但使用的语法不同。这里给出的不同类型的描述是自动生成的
- awk正则表达式语法
- egrep正则表达式语法
- 非对称正则表达式语法
- emacs正则表达式语法
- gnu awk正则表达式语法
- grep正则表达式语法
- posix awk正则表达式语法
- posix基本正则表达式语法
- posix egrep正则表达式语法
- posix扩展正则表达式语法
- posix最小基本正则表达式语法
- sed正则表达式语法
注意正则表达式部分的唯一区别是基本正则表达式(BRE)和扩展正则表达式(ERE)之间的区别,这可能也会有所帮助 布雷(+GNU) 此外,BRE示例使用GNU扩展:
\+
如果与这些实用程序的其他版本一起使用,这可能不起作用。感谢您找到一个非常有用的参考+1为什么此页面不列出:
*
?它确实列出了+
和?
,但不列出表明正则表达式应该与前面的原子或regexp的零次或多次匹配的*
。
printf "%s\n" foo bar baz food | grep '\<\(fo\+\|bar\)\>'
printf "%s\n" foo bar baz food | sed -n '/\<\(fo\+\|bar\)\>/p'
printf "%s\n" foo bar baz food | grep -E '\<(fo+|bar)\>'
printf "%s\n" foo bar baz food | sed -nr '/\<(fo+|bar)\>/p'
printf "%s\n" foo bar baz food | awk '/\<(fo+|bar)\>/'
\< ... \>
\+