URL 맵의 RE2 사양

이 페이지에서는 URL 맵의 정규 표현식RE2 구문을 사용하는 데 관련된 요구사항과 제한사항을 설명합니다.

RE2에는 다음과 같은 내장 제한사항이 있습니다.

  • RE2는 임의의 lookahead 또는 lookbehind 어설션을 지원하지 않으며 역참조도 지원하지 않습니다. 특히 다음 역참조 연산자는 지원되지 않습니다.
    • (?=) - 긍정 전방 탐색
    • (?!) - 부정 전방 탐색
    • (?<=) - 긍정적 후방 탐색
    • (?<!) - 부정적 lookbehind
    • \N - N이 정수인 역참조
  • RE2는 \cx를 Control-X 문자로 인식하지 않습니다.
  • RE2가 원자적 그룹화 연산자 (?>...)++을 인식하지 못함
  • RE2는 \C, \G 또는 \X를 인식하지 않습니다.
  • RE2는 조건부 하위 패턴 (?(...)...), 주석 (?#...), 패턴 참조 (?R) (?1) (?P>foo) 또는 C 콜아웃 (?C...)을 인식하지 않습니다.

앞서 설명한 RE2 제한 외에도 다음 허용 목록을 사용하여 정규 표현식 구문에 추가 제한이 적용됩니다.

  • 단일 문자 연산자는 허용됩니다.
  • 그룹은 submatch 연산자만 사용할 수 있습니다.
  • 그룹은 중복 없이만 허용됩니다.
  • 문자 반복은 다음 항목과 함께 단일 정규 표현식에서만 허용됩니다.
  • 범위에는 다음만 포함될 수 있습니다.

빈 문자열 및 빈 문자열의 유사 항목

연산자 설명
^ 텍스트 또는 줄의 시작 부분 (m=true)
$ 텍스트 끝 (예: \z, \Z 아님) 또는 줄 끝 (m=true)
\A 텍스트 시작 부분
\b ASCII 단어 경계 (\w가 한쪽에 있고 \W, \A 또는 \z가 다른 쪽에 있음)
\B ASCII 단어 경계에 있지 않음
\g 검색되는 하위 텍스트의 시작 부분
\G 마지막 경기 종료 시
\z 텍스트 끝

반복

연산자 설명
x* x가 0개 이상입니다(많을수록 좋음).
x+ x가 하나 이상 있어야 합니다(많을수록 좋음).
x? x가 0개 또는 1개(1개 선호)
x{n,m} N 또는 n+1 또는 ... 또는 m x, 더 많은 것을 선호
x{n,} N개 이상 x, 더 많은 것을 선호
x{n} 정확히 n x
x*? 0개 이상의 x, 적은 수 선호
x+? x가 하나 이상, 적은 쪽 선호
x?? 0 또는 1 x, 0이 선호됨
x{n,m}? N 또는 n+1 또는 ... 또는 m x, 적은 쪽을 선호
x{n,}? N개 이상의 x, 적은 수 선호
x{n}? 정확히 n배

하위 일치

연산자 설명
(re) 번호가 지정된 캡처링 그룹 (하위 일치)
(?P<name>re) 이름이 지정되고 번호가 매겨진 캡처링 그룹 (하위 일치)
(?<name>re) 이름이 지정되고 번호가 매겨진 캡처링 그룹 (하위 일치)
(?:re) 비캡처링 그룹
(?flags) 현재 그룹 내에서 플래그 설정, 캡처하지 않음
(?flags:re) re 중 플래그 설정, 캡처하지 않음

범위

연산자 설명
[] 범위
\d 숫자 (≡ [0-9])
\D 숫자가 아님 (≡ [^0-9])
\s 공백 (≡ [\t\n\f\r ])
\S 공백이 아님 (≡ [^\t\n\f\r ])
\w 단어 문자 (≡ [0-9A-Za-z_])
\W 단어 문자가 아님 (≡ [^0-9A-Za-z_])
[[:alnum:]] 영숫자 (≡ [0-9A-Za-z])
[[:alpha:]] 알파벳 (≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] 공백 (≡ [\t ])
[[:cntrl:]] 제어 (≡ [\x00-\x1F\x7F])
[[:digit:]] 숫자 (≡ [0-9])
[[:lower:]] 소문자 (≡ [a-z])
[[:space:]] 공백 (≡ [\t\n\v\f\r ])
[[:upper:]] 대문자 (≡ [A-Z])
[[:word:]] 단어 문자 (≡ [0-9A-Za-z_])
[[:xdigit:]] 16진수 (≡ [0-9A-Fa-f])

범위에서 허용되는 문자

문자 범위 설명
0-9, A-Z, a-z 영숫자
\x00-\x7F ASCII
0-9A-Fa-f 16진수
\t\n\v\f\r 공백
^ 범위 부정
!"#$%&'()*+,\-.:;<=>?@[\\\]^_`{|}~ 기타 캐릭터