RE2 구문
이 문서에서는 RE2 라이브러리의 구문인 KQL(Kusto 쿼리 언어)에서 지원하는 정규식 구문의 개요를 제공합니다.
정규식을 사용하여 문자열 일치, 선택 및 추출을 수행하는 여러 KQL 연산자 및 함수(예: matches regex
, parse
및 replace_regex()
)가 있습니다.
KQL에서 정규식은 문자열 리터럴로 인코딩되고 문자열 따옴표 규칙을 따라야 합니다. 예를 들어 RE2 정규식 \A
은 KQL "\\A"
로 표시됩니다. 추가 백슬래시는 다른 백슬래시는 정규식 \A
의 일부임을 나타냅니다.
구문 개요
다음 표에서는 Kusto에서 정규식을 작성하는 데 사용되는 RE2 정규식 구문을 간략하게 설명합니다.
구문 요소 |
설명 |
단일 리터럴 |
메타 문자(* + ? 제외)는 단일 문자가 자체와 일치합니다. () |), 다음 행에 설명된 대로 고유한 의미를 갖습니다. |
메타 문자 |
메타문자를 문자 그대로 일치하려면 백슬라이쉬로 이스케이프합니다. 예를 들어 정규식 \+ 은 리터럴 더하기(+ ) 문자와 일치합니다. |
교체 |
두 식을 대체하여 식 중 하나와 | 일치하는 새 식을 만듭니다. 예를 들어 중 e1 | e2 하나 e1 또는 e2 . |
Concatenation |
두 식을 연결하여 첫 번째 식 다음에 두 번째 식과 일치하는 새 식을 만듭니다. 예를 들어 e1e2 일치 항목 e1 뒤에 .가 잇습니다 e2 . |
반복 |
메타 문자는 + * 반복 연산자? 입니다. 예를 들어 e1? 0개 또는 1개의 항목을 e1 e1+ 일치시키고 하나 이상의 발생과 e1 일치하며 e1* 일치하는 문자열e1 이 0개 이상일 수 있습니다. |
참고 항목
정규식 연산자는 변환(), 연결(|
side-by-side 식) 및 반복(?
, +
, *
)의 순서로 평가됩니다. 괄호를 사용하여 평가 순서를 제어합니다.
단일 문자 식
예제 |
설명 |
. |
모든 문자, 줄 바꿈 문자를 포함할 수 있음(s=true) |
[xyz] |
character 클래스 |
[^xyz] |
부정 문자 클래스 |
\d |
Perl 문자 클래스 |
\D |
부정 Perl 문자 클래스 |
[[:alpha:]] |
ASCII 문자 클래스 |
[[:^alpha:]] |
부정 ASCII 문자 클래스 |
\pN |
유니코드 문자 클래스(한 글자 이름) |
\p{Greek} |
유니코드 문자 클래스 |
\PN |
부정 유니코드 문자 클래스(한 글자 이름) |
\P{Greek} |
부정 유니코드 문자 클래스 |
Composites
예제 |
설명 |
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 < a0/&A를 더 선호합니다. |
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 |
구현 제한: 계산 양식 x{n,m}, x{n,}, x{n} 거부 양식은 최소 또는 최대 반복 횟수를 1000보다 높게 만듭니다. 무제한 반복에는 이 제한이 적용되지 않습니다.
소유 반복
예제 |
설명 |
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<name>re) |
명명된 번호가 매겨진 캡처링 그룹(하위 일치) |
(?<name>re) |
명명된 번호가 매겨진 캡처링 그룹(하위 일치)(지원되지 않음) |
(?'name're) |
명명된 번호가 매겨진 캡처링 그룹(하위 일치)(지원되지 않음) |
(?:re) |
비 캡슐화 그룹 |
(?flags) |
현재 그룹 내에서 플래그를 설정합니다. 비 캡슐화 |
(?flags:re) |
다시 수행하는 동안 플래그를 설정합니다. 비 캡슐화 |
(?#text) |
주석(지원되지 않음) |
(?\|x\|y\|z) |
분기 번호 다시 설정(지원되지 않음) |
(?>re) |
소유 일치 re 항목(지원되지 않음) |
re@> |
(지원되지 않음) VIM의 re 소유 일치 |
%(re) |
비구조적 그룹(지원되지 않음) VIM |
플래그
예제 |
설명 |
i |
대/소문자를 구분하지 않습니다(기본값 false) |
m |
여러 줄 모드: ^ $ 시작/끝 텍스트 외에 시작/끝 선 일치(기본값 false) |
s |
let . match \n (기본값 false) |
U |
ungreedy: swap meaning of x* and x*? , x+ and x+? , etc (default false) |
플래그 구문은 xyz(set) 또는 -xyz(clear) 또는 xy-z(set xy, clear z)입니다.
플래그를 사용하려면 regex regexFlags flags=
kind=
와 같이 매개 변수와 flags
매개 변수를 지정 kind
해야 합니다.
빈 문자열
예제 |
설명 |
^ |
텍스트 또는 줄의 시작 부분(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 |
이스케이프 시퀀스
예제 |
설명 |
\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 |
역참조(지원되지 않음) |
\b |
백스페이스(지원되지 않음)(사용 \010 ) |
\cK |
control char ^K(지원되지 않음)(사용 \001 등) |
\e |
escape(지원되지 않음)(사용 \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 |
Perl 문자 클래스 |
[:foo:] |
ASCII 문자 클래스 foo |
\p{Foo} |
유니코드 문자 클래스 Foo |
\pF |
유니코드 문자 클래스 F (한 글자 이름) |
문자 클래스 요소로 명명된 문자 클래스
예제 |
설명 |
[\d] |
digits(≡ \d ) |
[^\d] |
숫자가 아님(≡ \D ) |
[\D] |
숫자가 아님(≡ \D ) |
[^\D] |
숫자가 아님(≡ \d ) |
[[:name:]] |
문자 클래스 내의 ASCII 클래스(≡ [:name:] )라는 이름 |
[^[:name:]] |
부정 문자 클래스 내의 ASCII 클래스라는 이름(≡ [:^name:] ) |
[\p{Name}] |
문자 클래스 내의 명명된 유니코드 속성(≡ \p{Name} ) |
[^\p{Name}] |
부정 문자 클래스 내의 명명된 유니코드 속성(≡ \P{Name} ) |
Perl 문자 클래스
ASCII 전용
예제 |
설명 |
\d |
digits(≡ [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:]] |
blank(≡ [\t ] ) |
[[:cntrl:]] |
control(≡ [\x00-\x1F\x7F] ) |
[[:digit:]] |
digits(≡ [0-9] ) |
[[:graph:]] |
그래픽(≡ [!-~] ≡ [A-Za-z0-9!"#$%&'()*+,\-./:;<=>?@[\\\]^_ { |}~] ) |
[[: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 |
기타 |
Cc |
control |
Cf |
format |
Cn |
할당되지 않은 코드 포인트(지원되지 않음) |
Co |
private use |
Cs |
서로게이트 |
L |
letter |
LC |
대/소문자(지원되지 않음) |
L& |
대/소문자(지원되지 않음) |
Ll |
소문자 |
Lm |
한정자 문자 |
Lo |
기타 문자 |
Lt |
titlecase letter |
Lu |
대문자 |
M |
mark |
Mc |
간격 표시 |
Me |
묶는 표시 |
Mn |
간격이 없는 표시 |
N |
number |
Nd |
십진수 |
Nl |
문자 번호 |
No |
기타 번호 |
P |
문장 부호 |
Pc |
커넥터 문장 부호 |
Pd |
대시 문장 부호 |
Pe |
문장 부호 닫기 |
Pf |
최종 문장 부호 |
Pi |
초기 문장 부호 |
Po |
기타 문장 부호 |
Ps |
문장 부호 열기 |
S |
기호 |
Sc |
통화 기호 |
Sk |
한정자 기호 |
Sm |
수학 기호 |
So |
기타 기호 |
Z |
separator |
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 문자 클래스
예제 |
설명 |
\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 |
digits(≡ [0-9] ) VIM |
\D |
VIM 아님 \d |
\x |
16진수(≡ [0-9A-Fa-f] ) (지원되지 않음) VIM |
\X |
NOT \x (지원되지 않음) VIM |
\o |
8진수(≡ [0-7] )(지원되지 않음) VIM |
\O |
NOT \o (지원되지 않음) VIM |
\w |
단어 문자 VIM |
\W |
VIM 아님 \w |
\h |
단어 문자의 머리(지원되지 않음) VIM |
\H |
NOT \h (지원되지 않음) VIM |
\a |
알파벳(지원되지 않음) VIM |
\A |
NOT \a (지원되지 않음) VIM |
\l |
소문자(지원되지 않음) VIM |
\L |
소문자 아님(지원되지 않음) VIM |
\u |
대문자(지원되지 않음) VIM |
\U |
대문자 아님(지원되지 않음) VIM |
\_x |
\x 더하기 줄임표(지원 x 되지 않음) VIM |
\c |
대/소문자 무시(지원되지 않음) VIM |
\C |
일치 사례(지원되지 않음) VIM |
\m |
매직(지원되지 않음) VIM |
\M |
nomagic(지원되지 않음) VIM |
\v |
verymagic(지원되지 않음) VIM |
\V |
verynomagic(지원되지 않음) VIM |
\Z |
유니코드 결합 문자의 차이점 무시(지원되지 않음) VIM |
매직
예제 |
설명 |
(?{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) |
설정 \R 규칙(지원되지 않음) PCRE |
(*BSR_UNICODE) |
(지원되지 않음) PCRE |