Регулярное выражение, или сокращённо regex, — это последовательность символов, определяющая шаблон поиска текста. Regex часто используется для различных задач, включая сопоставление шаблонов, проверку данных, преобразование данных и запросы. Он предлагает гибкий и эффективный способ поиска, управления и обработки сложных операций с данными.
Примечание
Регулярные выражения доступны в Управляемом экземпляре SQL Azure, настроенном с помощью политики обновления Always-up-to-date .
Возвращает таблицу захваченных подстрок, которые соответствуют шаблону регулярного выражения строке. Если совпадение не найдено, функция не возвращает строку.
Возвращает таблицу строк, разделенную шаблоном регулярных выражений. Если шаблон не соответствует, функция возвращает строку.
Регулярные выражения могут состоять из литеральных символов и мета-символов, которые имеют особые значения и функции.
Простое регулярное выражение — это один литеральный символ. Символы соответствуют своим значениям, за исключением мета-символов. Мета-символы включают *, +, ?, (, ) или |. Чтобы сопоставить мета-символ, экранируйте его с помощью обратной косой черты. Например, \* соответствует литеральному символу звёздочка (*).
Принятые символы регулярных выражений
Односимвольные выражения
Типы односимвольных выражений
Примеры
любой символ, возможно, включающий новую строку (s=true)
класс отрицательных символов Юникода (однобуквенное имя)
\PN
класс отрицательных символов Юникода
\P{Greek}
Классы символов Perl
В следующей таблице перечислены поддерживаемые в настоящее время классы символов Perl.
классы символов Perl (только ASCII)
Описание
\d
цифры ( [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_])
Классы символов ASCII
В следующей таблице перечислены поддерживаемые в настоящее время классы символов ASCII.
Классы символов ASCII
Описание
[[:alnum:]]
буквенно-цифровой ( [0-9A-Za-z])
[[:alpha:]]
алфавитный ( [A-Za-z])
[[:ascii:]]
ASCII ( [\x00-\x7F])
[[:blank:]]
пусто ( [\t ])
[[:cntrl:]]
контроль ( [\x00-\x1F\x7F])
[[:digit:]]
цифры ( [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:]]
шестнадцатеричная цифра ( [0-9A-Fa-f])
Литеральные символы
Письма
Числа
Символы
Мета-символы
* соответствует нулю или нескольким вхождениям предыдущего символа
^ соответствует началу строки
Группировки
Группировать и записывать части шаблона с помощью следующих элементов:
Круглые скобки ( )
Скобки [ ]
Фигурные скобки { }
Флаги
Используйте флаги для изменения работы выражения. Рассмотрим пример.
i
m
s
c
Эта реализация поддерживает стандарт POSIX регулярных выражений, следуя RE2, и поддерживает вариант синтаксиса регулярных выражений PCRE/PCRE2, который совместим с большинством современных инструментов и средств обработки регулярных выражений. Существуют различные варианты регулярных выражений, такие как POSIX, ANSI, Perl и PCRE, которые имеют разные синтаксис и функции.
Требования
Клиентское средство SQL, например Azure Data Studio, SQL Server Management Studio или Visual Studio Code.
Базовые знания о синтаксисе и запросах SQL.
Базовое понимание синтаксиса регулярных выражений и концепций.
Вопросы и ответы
Что влияет на производительность использования регулярных выражений?
Запросы regex могут повлиять на производительность в зависимости от сложности шаблона regex, размера текстовых данных и количества связанных строк. Вы можете использовать план выполнения и статистику для мониторинга и оптимизации производительности запросов регулярных выражений.
Известные проблемы, поведение и ограничения
Это элементы, которые в настоящее время не поддерживаются в этой предварительной версии:
Типы данных LOB (varchar(max) или nvarchar(max)) для string_expressions
Функции регулярного выражения не поддерживаются в таблицах OLTP, оптимизированных для памяти
В SQL Server 2022 представлен ряд новых функций и улучшений, предоставляя мощные средства и возможности, которые оптимизируют производительность и обеспечивают более эффективный контроль над манипуляциями и созданием объектов SQL.