grep을 사용하여 정규식 패턴에서 OR 사용 [중복]

grep을 사용하여 정규식 패턴에서 OR 사용 [중복]

정규식 일치(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 연산자로 해석할 수 있습니다.

관련 정보