다음을 통해 공유


정규식 2(re2.h) 구문

정규식은 문자열 세트를 설명하기 위한 표기법입니다. 문자열이 정규식으로 설명된 집합에 있는 경우 정규식이 문자열과 일치 한다고 가정합니다.

가장 간단한 정규식은 단일 리터럴 문자입니다. *+?()|과 같은 메타 문자를 제외하고 문자는 자신과 일치합니다. 메타 문자와 일치하려면 백슬래시로 이스케이프합니다. 예를 들어 는 \+ 리터럴 더하기 문자와 일치합니다.

두 개의 정규식을 변경하거나 연결하여 새 정규식을 구성할 수 있습니다. e1s와 e 2가 일치하는 경우e1e2s 또는 t와 일치하고, e1 | e2st와 일치합니다.

메타 문자 , +? 는 반복 연산자*입니다. e1*은 0개 이상의(아마도 다른) 문자열 시퀀스와 일치하며 각 문자열은 e1과 일치합니다. e1+ 하나 이상의 일치; e1? 는 0 또는 1과 일치합니다.

연산자 우선 순위는 가장 약한 바인딩에서 가장 강력한 바인딩까지 다음과 같습니다.

  • 교체
  • 연결
  • 반복 연산자

명시적 괄호를 사용하여 산술 식과 같이 다른 의미를 적용할 수 있습니다. 일부 예제: ab|cd 는 와 (ab)|(cd)ab\ 같고 는 와 a(b\)같습니다.

지금까지 설명한 구문은 대부분의 기존 Unix egrep 정규식 구문입니다. 이 하위 집합은 모든 일반 언어를 설명하는 데 충분합니다. 일반 언어는 고정된 양의 메모리만 사용하여 텍스트를 한 번의 패스로 일치시킬 수 있는 문자열 집합입니다. 최신 정규식 기능(특히 Perl 및 복사한 언어)에는 많은 새 연산자와 이스케이프 시퀀스가 추가되었습니다. 이러한 변경으로 정규식이 더 간결하고 때로는 더 비밀스러지지만 더 강력하지는 않습니다.

이 페이지는 RE2에서 허용하는 정규식 구문을 나열합니다.

또한 PCRE, PERL 및 VIM에서 허용하는 몇 가지 구문을 나열합니다.

구문 테이블

단일 문자 표현의 종류
모든 문자, 줄 바꿈(s=true)을 포함할 수 있습니다. .
문자 클래스 [xyz]
부정 문자 클래스 [^xyz]
Perl 문자 클래스( 링크 ) \d
부정된 Perl 문자 클래스 \D
ASCII 문자 클래스(링크 ) [[:alpha:]]
부정된 ASCII 문자 클래스 [[:^alpha:]]
유니코드 문자 클래스(한 글자 이름) \pN
유니코드 문자 클래스 \p{Greek}
부정된 유니코드 문자 클래스(한 글자 이름) \PN
부정된 유니코드 문자 클래스 \P{Greek}
  합성물
xy x 다음에 y
x|y x 또는 y(x 선호)
  반복
x* 0개 이상의 x, 더 선호
x+ 하나 이상의 x, 더 선호
x? 0 개 또는 1개의 x, 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 x
x{} (≡ x*) (지원되지 않음) VIM
x{-} (≡ x*?) (지원되지 않음) VIM
x{-n} (≡x{n}?) (지원되지 않음) VIM
x= (≡x?) (지원되지 않음) VIM

구현 제한: 1000을 초과하는 최소 또는 최대 반복 수를 만드는 계수 양식 x{n,m}, x{n,}x{n} 거부 양식입니다. 무제한 반복에는 이 제한이 적용되지 않습니다.

  소유 반복
x*+ 0개 이상의 x, 소유격(지원되지 않음)
x++ 하나 이상의 x, 소유격(지원되지 않음)
x?+ 0개 또는 1개의 x, 소유격(지원되지 않음)
x{n,m}+ n 또는 ... 또는 m x, 소유격(지원되지 않음)
x{n,}+ n개 이상의 x, 소유격(지원되지 않음)
x{n}+ 정확히 n x, 소유격(지원되지 않음)
  그룹화
(re) 번호가 매겨진 캡처링 그룹(부분 일치)
(?P<이름>re) 명명된 & 번호가 매겨진 캡처 그룹(하위 일치)
(?<이름>re) 명명된 & 번호가 매겨진 캡처 그룹(하위 일치)(지원되지 않음)
(?' name're) 명명된 & 번호가 매겨진 캡처 그룹(하위 일치)(지원되지 않음)
(?:re) 비 캡처링 그룹
(?flags) 현재 그룹 내에서 플래그를 설정합니다. 비 캡처링
(?flags:re) 다시 수행하는 동안 플래그를 설정합니다. 비 캡처링
(?#text) 메모(지원되지 않음)
(?|x|y|z) 분기 번호 매기기 재설정(지원되지 않음)
(?>re) re (지원되지 않음)의 소유격 일치 결과
re@> re (지원되지 않음)의 소유격 일치 결과 VIM
%(re) 비 캡처링 그룹(지원되지 않음) VIM
  Flags
i 대/소문자를 구분하지 않습니다(기본값 false).
m 여러 줄 모드: ^ 및 $는 시작/끝 텍스트 외에 시작/끝 줄과 일치합니다(기본값은 false).
s 허용. \n 치(기값 false)
U ungreedy: x* 및 x*?, x+ 및 x+?등의 스왑 의미(기본값 false)

플래그 구문은 (set) 또는 -xyz (clear) 또는 xy-z (set xy, clear z)입니다 xyz .

  빈 문자열
^ 텍스트나 줄의 맨 앞(m = true)
$ 행 끝(\z not \Z) 또는 회선(m = true)
\A 텍스트의 시작 부분에
\b ASCII 단어 경계(1면과 \W, \A 또는 \z에 \w)가 있습니다.
\B ASCII 단어 경계가 아님
\g 검색 중인 하위 텍스트(지원되지 않음)의 시작 부분 PCRE
\G 마지막 일치 항목(지원되지 않음)의 종료 부분 PERL
\Z 텍스트의 끝 또는 텍스트의 끝과 줄 바꿈 이전(지원되지 않음)
\z 텍스트 끝
(?=re) 텍스트 일치 이전(지원되지 않음)
%(re) 텍스트 불일치 이전(지원되지 않음)
(?<=re) 텍스트 일치(지원되지 않음) 전에
(?<!re) 텍스트 불일치 후에(지원되지 않음)
re& 텍스트 일치 이전(지원되지 않음) VIM
re@= 텍스트 일치 이전(지원되지 않음) VIM
re@! 텍스트 불일치 이전(지원되지 않음) VIM
<re@= 텍스트 일치 이전(지원되지 않음) VIM
re@<! 텍스트 불일치 후(지원되지 않음) VIM
\zs 일치 시작 설정(=\K)(지원되지 않음) VIM
\ze 일치 종료 설정(지원되지 않음) VIM
\%^ 파일의 시작(지원되지 않음) VIM
\%$ 파일의 시작(지원되지 않음) VIM
\%V 화면에서(지원되지 않음) VIM
\%# 커서 위치(지원되지 않음) VIM
\%'m m 위치 표시(지원되지 않음) VIM
\%23l 회선 23에서(지원되지 않음) VIM
\%23c 열 23에서(지원되지 않음) VIM
\%23v 가상 열 23에서(지원되지 않음) VIM
  이스케이프 시퀀스
\a 종(≡ \007)
\f 양식 피드(≡ \014)
\t 수평 탭(≡ \011)
\n 줄 바꿈(≡ \012)
\r 캐리지 반환(≡ \015)
\v 수직 탭 문자(≡ \013)
* 리터럴 *, 모든 문장 부호 문자의 경우 *
\123 8진수 문자 코드(최대 3자리)
\x7F 16진수 문자 코드(두 자리 수)
\x{10FFF} 16진수 문자 코드
\C UTF-8 모드에서도 단일 바이트 일치
\Q...\E 리터럴 텍스트...문장 부호가 있더라도
\1 역참조(지원되지 않음)
\b 백스페이스(지원되지 않음)(010원 사용)
\cK 제어 문자 ^K(지원되지 않음)(\001 등 사용)
\e 종료(지원되지 않음)(\033 사용)
\g1 역참조(지원되지 않음)
\g{1} 역참조(지원되지 않음)
\g{+1} 역참조(지원되지 않음)
\g{-1} 역참조(지원되지 않음)
\g{name} 명명된 백레퍼런스(지원되지 않음)
\g<name> 서브루틴 호출(지원되지 않음)
\g'name' 서브루틴 호출(지원되지 않음)
\k<name> 명명된 백레퍼런스(지원되지 않음)
\k'name' 명명된 백레퍼런스(지원되지 않음)
\lX 소문자 X(지원되지 않음)
\ux 대문자 x(지원되지 않음)
\L...\E 소문자 텍스트...(지원되지 않음)
\K $0 시작 재설정(지원되지 않음)
\N{name} 명명된 유니코드 문자(지원되지 않음)
\R 회선 중단(지원되지 않음)
\U...\E 대문자 텍스트...(지원되지 않음)
\X 확장 유니코드 시퀀스(지원되지 않음)
%d123 10진수 문자 123(지원되지 않음) VIM
%xFF 16진수 FF(지원되지 않음) VIM
%o123 8진수 문자 123(지원되지 않음) VIM
%u1234 유니코드 문자 0x1234(지원되지 않음) VIM
%U12345678 유니코드 문자 0x12345678(지원되지 않음) VIM
  문자 클래스 요소
x 단일 문자
A-Z 문자 범위(계속)
\d 펄 문자 클래스
[:foo:] ASCII 문자 클래스 foo
\p{Foo} 유니코드 문자 클래스 Foo
\pF 유니코드 문자 클래스 F(단일 문자 이름)
  문자 클래스 요소로 명명된 문자 클래스
[\d] 숫자(≡ \d)
[^\d] 숫자 아님(≡ \D)
[\D] 숫자 아님(≡ \D)
[^\D] 숫자 없음 아님(≡ \d)
[[:name:]] 문자 클래스 내 명명된 ASCII 클래스(문서 [:name:])
[^[:name:]] 부정 문자 클래스 내의 명명된 ASCII 클래스(≡ [:^name:])
[\p{Name}] 문자 클래스 내의 명명된 유니코드 속성(≡ \p{Name})
[^\p{Name}] 부정된 문자 클래스 내의 명명된 유니코드 속성(≡ \P{Name})
Perl 문자 클래스(모든 ASCII 전용)
\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_])
\h 수평 공간(지원되지 않음)
\H 수평 공간이 아님(지원되지 않음)
\v 수직 공간(지원되지 않음)
\V 수직 공간이 아님(지원되지 않음)
ASCII 문자 클래스
[[:alnum:]] 영숫자(≡ [0-9A-Za-z])
[[:alpha:]] 영문자(≡ [A-Za-z])
[[:ascii:]] ASCII (≡ [\x00-\x7F])
[[:blank:]] 공백(≡ [\t])
[[:cntrl:]] 컨트롤(≡ [\x00-\x1F\x7F])
[[:digit:]] 숫자(≡ [0-9])
[[:graph:]] 그래픽(≡ [!-~][A-Za-z0-9!&quot;#$%&amp;&#39;()\*+,\-./:;&lt;=&gt;?@[\\\]^_` {\|}~])
[[:lower:]] 소문자(≡ [a-z])
[[:print:]] 인쇄 가능(≡ [-~] ≡ [[:graph:]])
[[:punct:]] 구두점(≡ [!-/:-@[-`{-~])
[[:space:]] 흰 공백(≡ [\t\n\v\f\r])
[[:upper:]] 대문자(≡ [A-Z])
[[:word:]] 단어 문자(≡ [0-9A-Za-z_])
[[:xdigit:]] 16진수(≡ [0-9A-Fa-f])
  유니코드 문자 클래스 이름--일반 카테고리
C 기타
참조 control
Cf 형식
Cn 할당되지 않은 코드 포인트(지원되지 않음)
Co 비공개 사용
Cs 서로게이트
L 글자
LC 대/소문자(지원되지 않음)
L& 대/소문자(지원되지 않음)
Ll 소문자
Lm 수식어
Lo 다른 편지
LT 제목 문자
Lu 대문자
M 표시
Mc 간격 표시
Me 묶기 표시
Mn 간격 없음 표시
N 숫자
Nd 십진수
Nl 문자 번호
아니오 그 외 숫자
P 구두점
Pc 커넥터 구두점
Pd 대시 구두점
Pe 구두점 닫기
Pf 최종 구두점
Pi 초기 구두점
Po 기타 구두점
Ps 구두점 열기
S symbol
Sc 통화 기호
Sk 수식어 기호
Sm 수학 기호
So 기타 기호
Z 구분 기호
Zl 선 구분 기호
Zp 단락 구분 기호
Zs 공간 구분 기호
유니코드 문자 클래스 이름--스크립트
아들람 문자
아홈 문자
Anatolian_Hieroglyphs
아랍어
아르메니아어
아베스타 문자
발리어
바뭄 문자
Bassa_Vah
바타크 문자
벵골어
바이크슈키 문자
보포모포 문자
브라미 문자
점자
부기어
부히드어
Canadian_Aboriginal
카리안
Caucasian_Albanian
차크마 문자
Cham
체로키어
초라스미안
일반
콥트어
쿠네오페어
키프로스어
키릴 문자
데저렛 문자
데바나가리어
Dives_Akuru
도그라 문자
듀플로이안 문자
Egyptian_Hieroglyphs
엘바산 문자
엘리마어
에티오피아어
그루지야어
글라골어
고딕어
그란타 문자
그리스어
구자라트어
Gunjala_Gondi
굴묵키어
간체
한글
Hanifi_Rohingya
하누누어
해트란 문자
히브리어
히라가나
Imperial_Aramaic
상속됨
Inscriptional_Pahlavi
Inscriptional_Parthian
자바어
카이티 문자
칸나다어
가타카나
Kayah_Li
하로쉬티
Khitan_Small_Script
크메르어
코지키
후다와디
라오스어
라틴어
렙차어
림부어
Linear_A
Linear_B
리쑤 문자
리키아 문자
리디아 문자
마하자니 문자
마카사르 문자
말라얄람어
만다이아 문자
마니 문자
마르첸 문자
Masaram_Gondi
Medefaidrin
Meetei_Mayek
Mende_Kikakui
Meroitic_Cursive
Meroitic_Hieroglyphs
먀오 문자
모디
몽골어
Mro
Multani
미얀마
나바테안 문자
난디 나가리 기호
New_Tai_Lue
뉴아
은코어
Nushu
Nyiakeng_Puachue_Hmong
Ogham
Ol_Chiki
Old_Hungarian
Old_Italic
Old_North_Arabian
Old_Permic
Old_Persian
Old_Sogdian
Old_South_Arabian
Old_Turkic
오리야어
오사게
오스만야
Pahawh_Hmong
Palmyrene
Pau_Cin_Hau
Phags_Pa
페니키아 문자
Psalter_Pahlavi
레장 문자
룬어
사마리아 문자
사우라슈트라
Sharada
샤우 문자
Siddham
수화 문자
싱할라어
Sogdian
Sora_Sompeng
Soyombo
순다어
Syloti_Nagri
시리아어
타갈로그어
타그반와어
Tai_Le
Tai_Tham
Tai_Viet
Takri
타밀어
탕구트 문자
텔루구어
타아나 문자
태국어
티베트어
티푸나구 문자
티 루타 문자
우가리아어
바이
완초 문자
Warang_Citi
Yezidi
이어
Zanabazar_Square
  Vim 문자 클래스
\i 식별자 문자(지원되지 않음) VIM
\I \i 제외 숫자(지원되지 않음) VIM
\k 키워드 문자(지원되지 않음) VIM
\K 숫자를 제외한 \k(지원되지 않음) VIM
\f 파일 이름 문자(지원되지 않음) VIM
\F \f 숫자 제외(지원되지 않음) VIM
\p 인쇄 가능한 문자(지원되지 않음) VIM
\P \p 숫자 제외(지원되지 않음) VIM
\s 공백 문자([\t])(지원되지 않음) VIM
\S 공백 문자가 아닌 문자([^ \t])(지원되지 않음) VIM
\d 숫자(숫자 [0-9]) VIM
\D \d VIM이 아님
\x 16진수([0-9A-Fa-f])(지원되지 않음) VIM
\X \x 아님(지원되지 않음) VIM
\o 8진수([0-7])(지원되지 않음) VIM
\O \o(지원되지 않음) VIM 아님
\w 단어 문자 VIM
\W not \w VIM
\h 단어 문자(지원되지 않음) 헤드 VIM
\H \h(지원되지 않음) VIM 아님
\a 영문자(지원되지 않음) VIM
\A \a 아님(지원되지 않음) VIM
\l 소문자(지원되지 않음) VIM
\L 소문자 아님(지원되지 않음) VIM
\u 대문자(지원되지 않음) VIM
\U 대문자 아님(지원되지 않음) VIM
_x \x+줄 바꿈, 모든 x(지원되지 않음) VIM용
\c 대/소문자 무시(지원되지 않음) VIM
\C 대/소문자 일치(지원되지 않음) VIM
\m 마법(지원되지 않음) VIM
\M 마법 아님(지원되지 않음) VIM
\v VIM(지원되지 않음) VIM
\V verynomagic(지원되지 않음) VIM
\Z 유니코드 조합 문자(지원되지 않음) VIM의 차이 무시
  매직
(?{code}) 임의 Perl 코드(지원되지 않음) PERL
(?{code}) 지연된 임의 Perl 코드(지원되지 않음) PERL
(?n) 그룹 n을 캡처하기 위한 재귀 호출(지원되지 않음)
(?+n) 상대 그룹에 대한 재귀 호출 +n(지원되지 않음)
(?-n) 상대 그룹에 대한 재귀 호출 -n(지원되지 않음)
(?C) PCRE 콜아웃(지원되지 않음) PCRE
(?R) 전체 regexp(?0)에 대한 재귀 호출(지원되지 않음)
(?&이름) 명명된 그룹에 대한 재귀 호출(지원되지 않음)
(?P=이름) 명명된 역참조(지원되지 않음)
(?P>name) 명명된 그룹에 대한 재귀 호출(지원되지 않음)
(? (cond)true|false) 조건부 분기(지원되지 않음)
(?(조건)true) 조건부 분기(지원되지 않음)
(*ACCEPT) regexps를 Prolog와 유사하게 만들기(지원되지 않음)
(*COMMIT) (지원되지 않음)
(*F) (지원되지 않음)
(*FAIL) (지원되지 않음)
(*MARK) (지원되지 않음)
(*PRUNE) (지원되지 않음)
(*SKIP) (지원되지 않음)
(*THEN) (지원되지 않음)
(*ANY) 줄바꿈 규칙 설정 (지원되지 않음)
(*ANYCRLF) (지원되지 않음)
(*CR) (지원되지 않음)
(*CRLF) (지원되지 않음)
(*LF) (지원되지 않음)
(*BSR_ANYCRLF) \R 컨벤션(지원되지 않음) PCRE 설정
(*BSR_UNICODE) (지원되지 않음) PCRE

콘텐츠 라이선스

참고

이 페이지의 일부는 Chromium.org에서 생성 및 공유하고 Creative Commons Attribution 4.0 국제 라이선스에 규정된 조건에 따라 사용되는 작업을 기반으로 합니다. 원래 페이지는 여기에서 찾을 수 있습니다.

Creative Commons 라이선스
이 작업은 Creative Commons Attribution 4.0 국제 라이선스에서 사용이 허가되었습니다.

참고 항목