간격 정규식과 토큰 정규식이란 무엇입니까?

간격 정규식과 토큰 정규식이란 무엇입니까?

나는 최근 sed에 대해 읽으면서 이 주제를 발견했습니다. 이 주제를 더 잘 이해하려면 몇 가지 예가 필요합니다.

답변1

정규식의 간격 연산자기본 정규식표준 지원(BRE) sed\{x,y\}.

동등한 ERE(확장) 또는 PCRE( perl호환) 연산자(일부 구현에서 사용됨 -r/-E, -R/ )는 입니다.-Psed{x,y}

정규식의 반복 횟수 범위를 지정하는 데 사용됩니다.

sed 's/<a\{3,12\}>/<b>/'

첫 번째 항목을 바꾼 <다음 3~12 a초, 그 >다음에는 을 (를) 교체합니다 <b>.

유사한 입력에서는 로 <a> <aa> <aaaa> <aaaaaaaa>대체됩니다 .<aaaa><b>

태그 정규식더 일반적으로 알려진캡처 그룹.

\(...\)BRE에서는 ERE/PCRE 와 동일하며 (...).포착다음과 같이 사용할 수 있는 정규 표현식과 일치하는 텍스트역참조또는 대체. 이러한 제품은 다음 용도로도 사용할 수 있습니다.그룹( \(foo\)*어떤 수의 foos와 마찬가지로).

존재하다:

sed 's/\(.\)\(.\)\(.*\)\2\1/\1\2<\3>\2\1/'

우리에겐 3개가 있어요태그 표현식또한 ~으로 알려진캡처 그룹, 첫 번째로 일치하는 문자( .단일 문자와 일치하는 데 사용됨) \(.\)는 으로 표시되고 나중에 정규식에서 참조되며 1(따라서 첫 번째 문자가 캡처되면 on만 일치됨) 대체에도 사용됩니다.\1\(.\)x\1x

이와 같이 입력하면 whatever -+foobar+-정규 표현식이 발견되고 명령 (1:-)(2:+)(3:foobar)(2:+)(1:-)s이를 로 대체합니다 -+<foobar>+-.

표준(POSIX) ERE는 역참조( \1위 정규식에서) 를 지원하지 않으므로 (...)다음에서만 작동합니다 .그룹( (foo|bar)또는 에서와 같이 (foo){1,3}), 일부 구현에서는 이를 확장으로 지원합니다. POSIX 사양의 다음 주요 버전에서는 -E정규식에 ERE를 사용하는 옵션을 지정합니다. 정규식(역참조)에서는 아직 지원되지 않지만 해당 태그 표현식과 일치하도록 대체 항목이 확장될 예정입니다.sed\1\1s

python, perl, PCRE 또는 호환되는 정규 표현식을 사용하면 마커 표현식에 임의의 이름을 지정할 수도 있습니다( 왼쪽에서 오른쪽으로 번호가 매겨진 1, ... 뿐만 아니라). 2자세한 내용은 해당 설명서를 참조하세요.

관련 정보