RE2 구문
이 문서에서는 RE2 라이브러리의 구문인 KQL(Kusto 쿼리 언어)에서 지원하는 정규식 구문에 대한 개요를 제공합니다.
, parse
, 등의 정규식을 사용하여 문자열 일치, 선택 및 추출을 수행하는 여러 KQL 연산자 matches regex
및 replace_regex()
함수가 있습니다.
KQL에서 정규식은 문자열 리터럴 로 인코딩되고 문자열 따옴표 규칙을 따라야 합니다. 예를 들어 RE2 정규식 \A
은 KQL에서 로 "\\A"
표시됩니다. 추가 백슬래시는 다른 백슬래시가 정규식 \A
의 일부임을 나타냅니다.
구문 개요
다음 표에서는 Kusto에서 정규식을 작성하는 데 사용되는 RE2 정규식 구문을 개략적으로 설명합니다.
구문 요소 |
Description |
단일 리터럴 |
메타 문자(* + ? 제외)는 단일 문자가 자체와 일치합니다. ( ) |), 다음 행에 설명된 대로 고유한 의미가 있습니다. |
메타 |
메타문자를 문자 그대로 일치하려면 백슬라이쉬로 이스케이프합니다. 예를 들어 정규식 \+ 은 리터럴 더하기(+ ) 문자와 일치합니다. |
교체 |
두 식을 대체하여 식 중 하나와 | 일치하는 새 식을 만듭니다. 예를 들어 는 e1 | e2 또는 e2 을 일치합니다e1 . |
연결 |
두 식을 연결하여 첫 번째 식 다음에 두 번째 식과 일치하는 새 식을 만듭니다. 예를 들어 일치 항목 e1e2 e1 뒤에 가 잇습니다 e2 . |
반복 |
메타 문자 ? , + 및 * 는 반복 연산자입니다. 예를 들어 는 e1? 0개 또는 1개의 e1 발생 e1 e1+ 을 일치시키고 하나 이상의 을 일치시키고 와 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 또는 ... 또는 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 |
구현 제한: 계산 양식 x{n,m}, x{n,}, x{n}은 최소 또는 최대 반복 횟수를 1000개 이상으로 만드는 양식을 거부합니다. 무제한 반복에는 이 제한이 적용되지 않습니다.
소유 반복
예제 |
Description |
x*+ |
0개 이상 x , 소유(지원되지 않음) |
x++ |
하나 이상의 x 소유(지원되지 않음) |
x?+ |
0개 또는 1개 x , 소유(지원되지 않음) |
x{n,m}+ |
n 또는... 또는 m x , 소유(지원되지 않음) |
x{n,}+ |
n 이상 x , 소유(지원되지 않음) |
x{n}+ |
정확히 n x , 소유(지원되지 않음) |
그룹화
예제 |
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 |