我在 grep(zgrep,在压缩文件中搜索)中使用以下模式进行正则表达式匹配
zgrep -P '(?<=start).{20,120}(?=end)' *
我需要OR
在中间添加一些带有运算符的术语,但是这种模式不起作用
zgrep -P '(?<=start)[first|second|third].{20,120}(?=end)' *
如何first|second|third
在匹配字符串的中间引入?
我在 grep(zgrep,在压缩文件中搜索)中使用以下模式进行正则表达式匹配
zgrep -P '(?<=start).{20,120}(?=end)' *
我需要OR
在中间添加一些带有运算符的术语,但是这种模式不起作用
zgrep -P '(?<=start)[first|second|third].{20,120}(?=end)' *
如何first|second|third
在匹配字符串的中间引入?
括号中的表达式
[..]
匹配列表中的任何单个字符,因此[first|second|third]
分别匹配每个字母:f
,i
,r
,s
,t
,|
,e
等(注意不需要 seconds
)。该规则很少有例外,例如^
开头是否定或-
标记字符范围,但管道|
并不特殊,因此grep
只需在文件中搜索此符号。你想要的是
(first|second|third)
. 里面的所有内容都(..)
形成了主正则表达式的子表达式,可以组合/连接|
,被解释为 OR 运算符。