Существует ряд операторов и функций KQL, которые выполняют сопоставление, выделение и извлечение строк с помощью регулярных выражений, например matches regex, parseи replace_regex().
В KQL регулярные выражения должны быть закодированы как строковые литералы и соответствовать правилам цитирования строк. Например, регулярное выражение \A RE2 представлено в KQL как "\\A". Дополнительная обратная косая черта указывает, что другая обратная косая черта является частью регулярного выражения \A.
Общие сведения о синтаксисе
В следующей таблице представлен синтаксис регулярных выражений RE2, который используется для записи регулярных выражений в Kusto.
Элемент Syntax
Описание
Одинарные литералы
Отдельные символы соответствуют себе, за исключением метасимваторов (* + ? ( ) |), которые имеют уникальные значения, как описано в следующих строках.
Метасимволы
Чтобы сопоставить метасимвол буквально, экранируйте его с помощью обратных косых черт. Например, регулярное выражение \+ соответствует литералу плюс (+).
Чередование
Чередуйте два выражения с | , чтобы создать новое выражение, соответствующее обоим из выражений. Например, e1 | e2 соответствует или e1e2.
Объединение
Сцепить два выражения, чтобы создать новое выражение, соответствующее первому выражению, за которым следует второе. Например, совпаденияe1, e1e2 за которым следует e2.
Повторение
Метасимвы ?, , +и * являются операторами повторения. Например, e1? соответствует нулю или одному вхождениям e1, e1+ соответствует одному или нескольким вхождениям e1и e1* соответствует последовательности из нуля или нескольких строк, которые могут отличаться e1от .
Примечание
Операторы регулярных выражений вычисляют в следующем порядке: чередование (|), объединение (параллельные выражения) и повторение (?, +, *). Используйте круглые скобки для управления порядком вычисления.
Односимвовые выражения
Пример
Описание
.
любой символ, возможно, включающий символ перехода на новую строку (s = true)
отрицание от класса символов Unicode (однобуквенное имя)
\P{Greek}
отрицание от класса символов Unicode
Комбинация
Пример
Описание
xy
x, затем y
x\|y
x или y (предпочитать x)
Повторений
Пример
Описание
x*
ноль или больше x, предпочитать больше
x+
один или несколько x, предпочитать больше
x?
ноль или один x, предпочитать один
x{n,m}
n или n+1 или ... или mx, предпочитать больше
x{n,}
n или более x, предпочитать больше
x{n}
Совершенно верно nx
x*?
ноль или больше x, предпочитать меньше
x+?
один или несколько x, предпочитать меньше
x??
ноль или один x, предпочитать ноль
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. Неограниченное повторение не распространяется на это ограничение.
Притяжательные повторения
Пример
Описание
x*+
ноль или более x, притяжательное (НЕ ПОДДЕРЖИВАЕТСЯ)
x++
один или несколько x, притяжательный (НЕ ПОДДЕРЖИВАЕТСЯ)
x?+
ноль или один x, притяжательный (НЕ ПОДДЕРЖИВАЕТСЯ)
x{n,m}+
n Или... или mx, притяжательный (НЕ ПОДДЕРЖИВАЕТСЯ)
x{n,}+
n или более x, притяжательный (НЕ ПОДДЕРЖИВАЕТСЯ)
x{n}+
exactly nx, притяжательный (НЕ ПОДДЕРЖИВАЕТСЯ)
Группирование
Пример
Описание
(re)
нумерообразуемая захватываемая группа (подсочина)
(?P<name>re)
именованной & нумерованной захватываемой группе (подсочинение)
(?<name>re)
именованной & нумерованной захватываемой группе (подсочет) (НЕ ПОДДЕРЖИВАЕТСЯ)
(?'name're)
именованной & нумерованной захватываемой группе (подсочет) (НЕ ПОДДЕРЖИВАЕТСЯ)
(?:re)
невзахватываемая группа
(?flags)
установка флагов в текущей группе; невзахватывание
(?flags:re)
установка флагов во время повторного выполнения; невзахватывание
(?#text)
comment (НЕ ПОДДЕРЖИВАЕТСЯ)
(?\|x\|y\|z)
Сброс нумеровки ветвей (НЕ ПОДДЕРЖИВАЕТСЯ)
(?>re)
притяжательное соответствие re (НЕ ПОДДЕРЖИВАЕТСЯ)
re@>
притяжательное соответствие re VIM (НЕ ПОДДЕРЖИВАЕТСЯ)
%(re)
группа без захвата (НЕ ПОДДЕРЖИВАЕТСЯ) VIM
Флаги
Пример
Описание
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).
Чтобы использовать флаги, необходимо указать kind параметры и flags следующим образом: kind=regexFlagsflags=.
Пустые строки
Пример
Описание
^
в начале текста или строки (m=true)
$
в конце текста (например \z , не\Z) или в строке (m=true)
\A
в начале текста
\b
на границе слова ASCII (\w с одной стороны и \W, \Aили \z с другой)
\B
не на границе слова ASCII
\g
в начале искомого подтекста (НЕ ПОДДЕРЖИВАЕТСЯ) PCRE
\G
в конце последнего совпадения (НЕ ПОДДЕРЖИВАЕТСЯ) PERL
\Z
в конце текста или перед новой строкой в конце текста (НЕ ПОДДЕРЖИВАЕТСЯ)
\z
в конце текста
(?=re)
перед сопоставлением re текста (НЕ ПОДДЕРЖИВАЕТСЯ)
(?!re)
before text not matching re (NOT SUPPORTED)
(?<=re)
после сопоставления re текста (НЕ ПОДДЕРЖИВАЕТСЯ)
(?<!re)
после несоответствия re текста (НЕ ПОДДЕРЖИВАЕТСЯ)
re&
до сопоставления re текста (НЕ ПОДДЕРЖИВАЕТСЯ) VIM
re@=
до сопоставления re текста (НЕ ПОДДЕРЖИВАЕТСЯ) VIM
re@!
before text not matching re (NOT SUPPORTED) 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
Escape-последовательности
Пример
Описание
\a
колокольчик (≡ \007)
\f
веб-канал формы (≡ \014)
\t
горизонтальная вкладка (≡ \011)
\n
newline (≡ \012)
\r
возврат каретки (≡ \015)
\v
символ вертикальной табуляции (≡ \013)
\*
литерал *, для любого знака препинания *
\123
восьмеричная кодировка символов (до трех цифр)
\x7F
шестнадцатеричный код символов (ровно две цифры)
\x{10FFFF}
шестнадцатеричный код символов
\C
сопоставление одного байта даже в режиме UTF-8
\Q...\E
литеральный текст ... , даже если ... имеет знаки препинания
\1
обратная ссылка (НЕ ПОДДЕРЖИВАЕТСЯ)
\b
backspace (НЕ ПОДДЕРЖИВАЕТСЯ) (используйте \010)
\cK
control char ^K (NOT SUPPORTED) (use \001 etc)
\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
десятичный знак 123 (НЕ ПОДДЕРЖИВАЕТСЯ) VIM
\%xFF
шестнадцатеричный символ FF (НЕ ПОДДЕРЖИВАЕТСЯ) VIM
\%o123
восьмериальный символ 123 (НЕ ПОДДЕРЖИВАЕТСЯ) VIM
\%u1234
Символ Юникода 0x1234 (НЕ ПОДДЕРЖИВАЕТСЯ) VIM
\%U12345678
0x12345678 символов Юникода (НЕ ПОДДЕРЖИВАЕТСЯ) VIM
Элементы класса символов
Пример
Описание
x
одиночный символ
A-Z
диапазон символов (включительно)
\d
класс символов Perl
[:foo:]
Класс символов ASCII foo
\p{Foo}
Класс символов Юникода Foo
\pF
Класс F символов Юникода (однобуквенный имя)
Именованные классы символов в качестве элементов класса символов
Пример
Описание
[\d]
цифры (≡ \d)
[^\d]
not digits (≡ \D)
[\D]
not digits (≡ \D)
[^\D]
not not digits (≡ \d)
[[:name:]]
именованный класс ASCII внутри класса символов (≡ [:name:])
[^[:name:]]
именованный класс ASCII внутри отрицаемого класса символов (≡ [:^name:])
[\p{Name}]
именованное свойство Юникода внутри класса символов \p{Name}(≡ )
[^\p{Name}]
именованное свойство Юникода внутри отрицаемого класса символов (≡ \P{Name})
Классы символов Perl
Только ASCII
Пример
Описание
\d
цифры (≡ [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
не горизонтальное пространство (НЕ ПОДДЕРЖИВАЕТСЯ)
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделе https://aka.ms/ContentUserFeedback.