정규식 일치(zgrep, 압축 파일 검색)를 위해 grep에서 다음 패턴을 사용하고 있습니다.
zgrep -P '(?<=start).{20,120}(?=end)' *
OR
중간에 연산자가 있는 몇 가지 용어를 추가 해야 하는데 이 패턴이 작동하지 않습니다.
zgrep -P '(?<=start)[first|second|third].{20,120}(?=end)' *
first|second|third
일치하는 문자열 중간에 어떻게 소개하나요?
답변1
괄호 안의 표현식은 [..]
목록의 모든 단일 문자와 일치하므로 [first|second|third]
각 문자를 개별적으로 일치시킵니다: f
, i
, r
, s
, t
, |
, e
등. (두 번째 문자는 필수가 아닙니다 s
.) 이 규칙에는 ^
부정으로 시작하거나 -
문자 범위를 표시하는 등 몇 가지 예외가 있지만 파이프는 |
특별하지 않으므로 grep
파일에서 이 기호를 검색하면 됩니다.
당신이 원하는 것은 입니다 (first|second|third)
. 내부의 모든 내용은 (..)
기본 정규 표현식의 하위 표현식을 형성하며 이를 결합/연결하여 |
OR 연산자로 해석할 수 있습니다.