grep中的两个正则表达式,具有交替

Art*_*.py 0 regex linux grep open-source

'^\{[a-z]*:[0-9]*\}$|;^[a-z]=[0-9]$' 
Run Code Online (Sandbox Code Playgroud)

怎么了?文档(手册页)说| 是交替运营商.

And*_*ark 6

从手册页:

交替
两个正则表达式可以通过中缀运算符连接|; 生成的正则表达式匹配任何匹配备用表达式的字符串.

你是误解了这个,并不是说|;是交替操作符,它是说|是交替操作符,分号分隔句子的两个部分.

此外,除非您使用扩展的正则表达式选项(-E),否则您将需要转义|:


基本正则表达式和扩展正则表达式在基本正则表达式中,元字符?,+,{,|,(和)失去了它们的特殊含义; 而是使用反斜杠版本\?,\ +,\ {,\ |,\(和\).

最终结果可能如下所示:

grep -E '^\{[a-z]*:[0-9]*\}$|^[a-z]=[0-9]$' some_file
Run Code Online (Sandbox Code Playgroud)

或者没有-E选项:

grep '^{[a-z]*:[0-9]*}$\|^[a-z]=[0-9]$' some_file
Run Code Online (Sandbox Code Playgroud)