Share via


RE2 구문

이 문서에서는 RE2 라이브러리의 구문인 KQL(Kusto 쿼리 언어)에서 지원하는 정규식 구문에 대한 개요를 제공합니다.

, parse, 등의 정규식을 사용하여 문자열 일치, 선택 및 추출을 수행하는 여러 KQL 연산자 matches regexreplace_regex()함수가 있습니다.

KQL에서 정규식은 문자열 리터럴 로 인코딩되고 문자열 따옴표 규칙을 따라야 합니다. 예를 들어 RE2 정규식 \A 은 KQL에서 로 "\\A"표시됩니다. 추가 백슬래시는 다른 백슬래시가 정규식 \A의 일부임을 나타냅니다.

구문 개요

다음 표에서는 Kusto에서 정규식을 작성하는 데 사용되는 RE2 정규식 구문을 개략적으로 설명합니다.

구문 요소 Description
단일 리터럴 메타 문자(* + ? 제외)는 단일 문자가 자체와 일치합니다. ( ) |), 다음 행에 설명된 대로 고유한 의미가 있습니다.
메타 메타문자를 문자 그대로 일치하려면 백슬라이쉬로 이스케이프합니다. 예를 들어 정규식 \+ 은 리터럴 더하기(+) 문자와 일치합니다.
교체 두 식을 대체하여 식 중 하나와 | 일치하는 새 식을 만듭니다. 예를 들어 는 e1 | e2 또는 e2을 일치합니다e1.
연결 두 식을 연결하여 첫 번째 식 다음에 두 번째 식과 일치하는 새 식을 만듭니다. 예를 들어 일치 항목 e1e2e1 뒤에 가 잇습니다 e2.
반복 메타 문자 ?, +* 는 반복 연산자입니다. 예를 들어 는 e1? 0개 또는 1개의 e1발생 e1e1+ 을 일치시키고 하나 이상의 을 일치시키고 와 e1* 일치하는 0개 이상의 다른 문자열 시퀀스와 일치e1합니다.

참고

정규식 연산자는 변경(), 연결(|side-by-side 식) 및 반복(?, +, *)의 순서로 평가됩니다. 괄호를 사용하여 평가 순서를 제어합니다.

단일 문자 식

예제 Description
. 모든 문자, 줄 바꿈 문자를 포함할 수 있음(s=true)
[xyz] 문자 클래스
[^xyz] 부정 문자 클래스
\d Perl 문자 클래스
\D 부정 Perl 문자 클래스
[[:alpha:]] ASCII 문자 클래스
[[:^alpha:]] 부정 ASCII 문자 클래스
\pN 유니코드 문자 클래스(한 글자 이름)
\p{Greek} 유니코드 문자 클래스
\PN 부정 유니코드 문자 클래스(한 글자 이름)
\P{Greek} 부정 유니코드 문자 클래스

복합

예제 Description
xy x 다음 y 실행
x\|y x 또는 y (선호 x)

반복

예제 Description
x* 0개 이상 x, 더 선호
x+ 하나 이상의 x를 더 선호합니다.
x? 0개 또는 1개 x, 선호
x{n,m} n 또는 n+1 또는 ... 또는 mx, 더 선호
x{n,} n 이상 x, 더 선호
x{n} 정확히 nx
x*? 0개 이상 x, 더 적은 수 선호
x+? 하나 이상의 x은 더 적은 것을 선호합니다.
x?? 0 또는 1 x, 0 선호
x{n,m}? n 또는 n+1 또는 ... 또는 mx은 더 적게 선호합니다.
x{n,}? n 또는 더 적은 x수의 를 선호합니다.
x{n}? 정확히 nx
x{} (≡ x*) (지원되지 않음) VIM
x{-} (≡ x*?) (지원되지 않음) VIM
x{-n} (≡ x{n}?) (지원되지 않음) VIM
x= (≡ x?) (지원되지 않음) VIM

구현 제한: 계산 양식 x{n,m}, x{n,}, x{n}은 최소 또는 최대 반복 횟수를 1000개 이상으로 만드는 양식을 거부합니다. 무제한 반복에는 이 제한이 적용되지 않습니다.

소유 반복

예제 Description
x*+ 0개 이상 x, 소유(지원되지 않음)
x++ 하나 이상의 x소유(지원되지 않음)
x?+ 0개 또는 1개 x, 소유(지원되지 않음)
x{n,m}+ n 또는... 또는 mx, 소유(지원되지 않음)
x{n,}+ n 이상 x, 소유(지원되지 않음)
x{n}+ 정확히 nx, 소유(지원되지 않음)

그룹화

예제 Description
(re) 번호가 매겨진 캡처링 그룹(하위 일치)
(?P<name>re) 명명된 & 번호가 매겨진 캡처 그룹(하위 일치)
(?<name>re) 명명된 & 번호가 매겨진 캡처링 그룹(하위 일치)(지원되지 않음)
(?'name're) 명명된 & 번호가 매겨진 캡처링 그룹(하위 일치)(지원되지 않음)
(?:re) 비 캡슐화 그룹
(?flags) 현재 그룹 내에서 플래그를 설정합니다. 비캡처
(?flags:re) 다시 수행하는 동안 플래그 설정; 비캡처
(?#text) 주석(지원되지 않음)
(?\|x\|y\|z) 분기 번호 매기기 재설정(지원되지 않음)
(?>re) 소유 일치 re 항목(지원되지 않음)
re@> (지원되지 않음) VIM의 re 소유 일치
%(re) 비 캡슐화 그룹(지원되지 않음) VIM

플래그

예제 Description
i 대/소문자를 구분하지 않음(기본값 false)
m 여러 줄 모드: ^$ 는 시작/끝 텍스트 외에 시작/끝 줄과 일치합니다(기본값 false).
s let . match \n (기본값 false)
U ungreedy: 및 , x*?x+x+?등의 의미 x* 교환(기본값 false)

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

플래그를 사용하려면regex regexFlagskind=flags=와 같이 및 flags 매개 변수를 지정 kind 해야 합니다.

빈 문자열

예제 Description
^ 텍스트 또는 줄의 시작 부분에(m=true)
$ 텍스트 끝(예: \z not\Z) 또는 줄(m=true)
\A 텍스트의 시작 부분에
\b ASCII 단어 경계(\w 한쪽 및 \W, \A또는 \z 다른 쪽)
\B ASCII 단어 경계에 없음
\g 검색 중인 하위 텍스트 시작 시(지원되지 않음) PCRE
\G 마지막 경기 종료 시(지원되지 않음) PERL
\Z 텍스트 끝 또는 텍스트 끝의 줄임표 앞에(지원되지 않음)
\z 텍스트 끝에
(?=re) 텍스트 일치 re 전(지원되지 않음)
(?!re) 텍스트가 일치하지 re 않기 전(지원되지 않음)
(?<=re) 텍스트 일치 re 후(지원되지 않음)
(?<!re) 텍스트가 일치하지 re 않는 후(지원되지 않음)
re& 텍스트 일치 re 전(지원되지 않음) VIM
re@= 텍스트 일치 re 전(지원되지 않음) VIM
re@! 텍스트가 일치하지 re 않기 전(지원되지 않음) VIM
re@<= 텍스트 일치 re 후(지원되지 않음) VIM
re@<! 텍스트가 일치하지 re 않는 후(지원되지 않음) VIM
\zs 일치 시작 설정(= \K)(지원되지 않음) VIM
\ze 일치 종료 설정(지원되지 않음) VIM
\%^ 파일 시작(지원되지 않음) VIM
\%$ 파일 끝(지원되지 않음) VIM
\%V 화면(지원되지 않음) VIM
\%# 커서 위치(지원되지 않음) VIM
\%'m 표시 m 위치(지원되지 않음) VIM
\%23l 23줄(지원되지 않음) VIM
\%23c 열 23(지원되지 않음) VIM
\%23v 가상 열 23(지원되지 않음) VIM

이스케이프 시퀀스

예제 Description
\a bell(≡ \007)
\f 양식 피드(≡ \014)
\t 가로 탭(≡ \011)
\n newline(≡ \012)
\r 캐리지 리턴(≡ \015)
\v 세로 탭 문자(≡ \013)
\* 리터럴 *, 모든 문장 부호 문자 *
\123 8진수 문자 코드(최대 3자리)
\x7F 16진수 문자 코드(정확히 두 자리 수)
\x{10FFFF} 16진수 문자 코드
\C UTF-8 모드에서도 단일 바이트와 일치
\Q...\E 문장 부호가 있더라도 ... 리터럴 텍스트 ...
\1 backreference(지원되지 않음)
\b 백스페이스(지원되지 않음)(사용 \010)
\cK control char ^K(지원되지 않음)(사용 \001 등)
\e escape(지원되지 않음)(사용 \033)
\g1 backreference(지원되지 않음)
\g{1} backreference(지원되지 않음)
\g{+1} backreference(지원되지 않음)
\g{-1} backreference(지원되지 않음)
\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

문자 클래스 요소

예제 Description
x 단일 문자
A-Z 문자 범위(포함)
\d Perl 문자 클래스
[:foo:] ASCII 문자 클래스 foo
\p{Foo} 유니코드 문자 클래스 Foo
\pF 유니코드 문자 클래스 F (한 글자 이름)

문자 클래스 요소로 명명된 문자 클래스

예제 Description
[\d] digits(≡ \d)
[^\d] not digits(≡ \D)
[\D] not digits(≡ \D)
[^\D] 숫자가 아님(≡ \d)
[[:name:]] 문자 클래스(≡ [:name:]) 내의 ASCII 클래스로 명명되었습니다.
[^[:name:]] 명명된 ASCII 클래스는 부정된 문자 클래스(≡ [:^name:]) 내에 있습니다.
[\p{Name}] 문자 클래스 내의 명명된 유니코드 속성(≡ \p{Name})
[^\p{Name}] 부정 문자 클래스 내의 명명된 유니코드 속성(≡ \P{Name})

Perl 문자 클래스

ASCII 전용

예제 Description
\d digits(≡ [0-9])
\D not digits(≡ [^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 문자 클래스

예제 Description
[[:alnum:]] 영숫자(≡ [0-9A-Za-z])
[[:alpha:]] 사전순(≡ [A-Za-z])
[[:ascii:]] ASCII(≡ [\x00-\x7F])
[[:blank:]] blank(≡ [\t ])
[[:cntrl:]] control(≡ [\x00-\x1F\x7F])
[[:digit:]] digits(≡ [0-9])
[[:graph:]] 그래픽(≡ [!-~][A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_{ |}~])
[[:lower:]] 소문자(≡ [a-z])
[[:print:]] printable(≡ [ -~][ [:graph:]])
[[:punct:]] 문장 부호(≡ [!-/:-@[-{-~])
[[:space:]] 공백(≡ [\t\n\v\f\r ])
[[:upper:]] 대문자(≡ [A-Z])
[[:word:]] 단어 문자(≡ [0-9A-Za-z_])
[[:xdigit:]] 16진수(≡ [0-9A-Fa-f])

유니코드 문자 클래스 이름

일반

예제 Description
C other
Cc 컨트롤
Cf format
Cn 할당되지 않은 코드 포인트(지원되지 않음)
Co 프라이빗 사용
Cs 서로게이트
L 편지
LC 대/소문자(지원되지 않음)
L& 대/소문자(지원되지 않음)
Ll 소문자
Lm 한정자 문자
Lo 기타 문자
Lt titlecase letter
Lu 대문자
M mark
Mc 간격 표시
Me 묶는 표시
Mn 비스페이스 표시
N number
Nd decimal number
Nl 문자 번호
No 기타 번호
P 문장 부호
Pc 커넥터 문장 부호
Pd 대시 문장 부호
Pe 문장 부호 닫기
Pf 최종 문장 부호
Pi 초기 문장 부호
Po 기타 문장 부호
Ps 문장 부호 열기
S 기호
Sc 통화 기호
Sk 한정자 기호
Sm 수학 기호
So 기타 기호
Z 구분 기호
Zl 줄 구분 기호
Zp 단락 구분 기호
Zs 공백 구분 기호

스크립트

스크립트
Adlam
Ahom
Anatolian_Hieroglyphs
Arabic
Armenian
Avestan
Balinese
Bamum
Bassa_Vah
Batak
Bengali
Bhaiksuki
Bopomofo
Brahmi
Braille
Buginese
Buhid
Canadian_Aboriginal
Carian
Caucasian_Albanian
Chakma
Cham
Cherokee
Chorasmian
Common
Coptic
Cuneiform
Cypriot
Cyrillic
Deseret
Devanagari
Dives_Akuru
Dogra
Duployan
Egyptian_Hieroglyphs
Elbasan
Elymaic
Ethiopic
Georgian
Glagolitic
Gothic
Grantha
Greek
Gujarati
Gunjala_Gondi
Gurmukhi
Han
Hangul
Hanifi_Rohingya
Hanunoo
Hatran
Hebrew
Hiragana
Imperial_Aramaic
Inherited
Inscriptional_Pahlavi
Inscriptional_Parthian
Javanese
Kaithi
Kannada
Katakana
Kayah_Li
Kharoshthi
Khitan_Small_Script
Khmer
Khojki
Khudawadi
Lao
Latin
Lepcha
Limbu
Linear_A
Linear_B
Lisu
Lycian
Lydian
Mahajani
Makasar
Malayalam
Mandaic
Manichaean
Marchen
Masaram_Gondi
Medefaidrin
Meetei_Mayek
Mende_Kikakui
Meroitic_Cursive
Meroitic_Hieroglyphs
Miao
Modi
Mongolian
Mro
Multani
Myanmar
Nabataean
Nandinagari
New_Tai_Lue
Newa
Nko
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
Odia
Osage
Osmanya
Pahawh_Hmong
Palmyrene
Pau_Cin_Hau
Phags_Pa
Phoenician
Psalter_Pahlavi
Rejang
Runic
Samaritan
Saurashtra
Sharada
Shavian
Siddham
SignWriting
Sinhala
Sogdian
Sora_Sompeng
Soyombo
Sundanese
Syloti_Nagri
Syriac
Tagalog
Tagbanwa
Tai_Le
Tai_Tham
Tai_Viet
Takri
Tamil
Tangut
Telugu
Thaana
Thai
Tibetan
Tifinagh
Tirhuta
Ugaritic
Vai
Wancho
Warang_Citi
Yezidi
Yi
Zanabazar_Square

Vim 문자 클래스

예제 Description
\i 식별자 문자(지원되지 않음) VIM
\I \i 제외 숫자(지원되지 않음) VIM
\k 키워드(keyword) 문자(지원되지 않음) VIM
\K \k 제외 숫자(지원되지 않음) VIM
\f 파일 이름 문자(지원되지 않음) VIM
\F \f 제외 숫자(지원되지 않음) VIM
\p 인쇄 가능한 문자(지원되지 않음) VIM
\P \p 제외 숫자(지원되지 않음) VIM
\s 공백 문자(≡ [ \t])(지원되지 않음) VIM
\S 비백인 공간 문자(≡ [^ \t])(지원되지 않음) VIM
\d digits(≡ [0-9]) VIM
\D VIM이 아님 \d
\x 16진수(≡ [0-9A-Fa-f]) (지원되지 않음) VIM
\X 지원되지 않음( 지원되지 않음 \x ) VIM
\o 8진수(≡ [0-7]) (지원되지 않음) VIM
\O 지원되지 않음( 지원되지 않음 \o ) VIM
\w 단어 문자 VIM
\W VIM이 아님 \w
\h 단어 문자의 머리(지원되지 않음) VIM
\H 지원되지 않음( 지원되지 않음 \h ) VIM
\a 알파벳(지원되지 않음) VIM
\A 지원되지 않음( 지원되지 않음 \a ) VIM
\l 소문자(지원되지 않음) VIM
\L 소문자 아님(지원되지 않음) VIM
\u 대문자(지원되지 않음) VIM
\U 대문자 아님(지원되지 않음) VIM
\_x \x 모든(지원되지 않음) VIM의 x 경우 더하기 줄임표
\c 대/소문자 무시(지원되지 않음) VIM
\C 일치 사례(지원되지 않음) VIM
\m 매직(지원되지 않음) VIM
\M nomagic(지원되지 않음) VIM
\v verymagic(지원되지 않음) VIM
\V verynomagic(지원되지 않음) VIM
\Z 유니코드 결합 문자의 차이 무시(지원되지 않음) VIM

매직

예제 Description
(?{code}) 임의 Perl 코드(지원되지 않음) PERL
(??{code}) 연기된 임의 Perl 코드(지원되지 않음) PERL
(?n) regexp 캡처링 그룹에 n 대한 재귀 호출(지원되지 않음)
(?+n) 상대 그룹에 +n 대한 재귀 호출(지원되지 않음)
(?-n) 상대 그룹에 -n 대한 재귀 호출(지원되지 않음)
(?C) PCRE 콜아웃(지원되지 않음) PCRE
(?R) 전체 regexp(≡ (?0))에 대한 재귀 호출(지원되지 않음)
(?&name) 명명된 그룹에 대한 재귀 호출(지원되지 않음)
(?P=name) 명명된 역참조(지원되지 않음)
(?P>name) 명명된 그룹에 대한 재귀 호출(지원되지 않음)
(?(cond)true\|false) 조건부 분기(지원되지 않음)
(?(cond)true) 조건부 분기(지원되지 않음)
(*ACCEPT) Regexps를 프롤로그처럼 만들기(지원되지 않음)
(*COMMIT) (지원되지 않음)
(*F) (지원되지 않음)
(*FAIL) (지원되지 않음)
(*MARK) (지원되지 않음)
(*PRUNE) (지원되지 않음)
(*SKIP) (지원되지 않음)
(*THEN) (지원되지 않음)
(*ANY) 줄임표 규칙 설정(지원되지 않음)
(*ANYCRLF) (지원되지 않음)
(*CR) (지원되지 않음)
(*CRLF) (지원되지 않음)
(*LF) (지원되지 않음)
(*BSR_ANYCRLF) set \R convention (NOT SUPPORTED) PCRE
(*BSR_UNICODE) (지원되지 않음) PCRE