정규식 2(re2.h) 구문
정규식은 문자열 세트를 설명하기 위한 표기법입니다. 문자열이 정규식으로 설명된 집합에 있는 경우 정규식이 문자열과 일치 한다고 가정합니다.
가장 간단한 정규식은 단일 리터럴 문자입니다.
*+?()|
과 같은 메타 문자를 제외하고 문자는 자신과 일치합니다. 메타 문자와 일치하려면 백슬래시로 이스케이프합니다. 예를 들어 는 \+
리터럴 더하기 문자와 일치합니다.
두 개의 정규식을 변경하거나 연결하여 새 정규식을 구성할 수 있습니다. e1이 s와 e 2가 일치하는 경우e1e2는 s 또는 t와 일치하고, e1 | e2는 st와 일치합니다.
메타 문자 , +
및 ?
는 반복 연산자*
입니다. 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}) |
유니코드 문자 클래스 이름--일반 카테고리 | |
---|---|
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 Attribution 4.0 국제 라이선스에서 사용이 허가되었습니다.