정규식은 문자열 세트를 설명하기 위한 표기법입니다. 문자열이 정규식으로 설명된 집합에 있는 경우 정규식이 문자열과 일치 한다고 가정합니다.
가장 간단한 정규식은 단일 리터럴 문자입니다.
*+?()|과 같은 메타 문자를 제외하고 문자는 자신과 일치합니다. 메타 문자와 일치하려면 백슬래시로 이스케이프합니다. 예를 들어 는 \+ 리터럴 더하기 문자와 일치합니다.
두 개의 정규식을 변경하거나 연결하여 새 정규식을 구성할 수 있습니다. 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 국제 라이선스에서 사용이 허가되었습니다.