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

时间:2012-03-29 16:50:46

标签: regex linux open-source grep

'^\{[a-z]*:[0-9]*\}$|;^[a-z]=[0-9]$' 

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

1 个答案:

答案 0 :(得分:6)

从手册页:

  

<强>轮换
  中缀运算符|可以连接两个正则表达式;生成的正则表达式匹配任何匹配替换表达式的字符串。

你误解了这一点,并不是说|;是交替运算符,而是说|是交替运算符,分号分隔句子的两个部分。 / p>

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

  

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

最终结果可能如下所示:

grep -E '^\{[a-z]*:[0-9]*\}$|^[a-z]=[0-9]$' some_file

或没有-E选项:

grep '^{[a-z]*:[0-9]*}$\|^[a-z]=[0-9]$' some_file