Образец
Стд::РегулярныеВыражения::Образец
Регулярное выражение.
В таблице ниже перечислены все возможные конструкции для построения регулярных выражений.
| Конструкция (EN) | Конструкция (RU) | Описание |
|---|---|---|
| Символы | ||
| x | х | Символ x |
| \ | \ | Символ обратной косой черты |
| \uhhhhh | \юhhhhh | Код символа в Юникод с десятеричным значением hhhhh |
| \t | \т | Символ табуляции ('\u0009') |
| \n | \н | Символ перевода строки ('\u000A') |
| \r | \в | Символ возврата каретки ('\u000D') |
| Классы символов | ||
| [abc] | [абв] | a, b, или c. Содержимое внутри квадратных скобок не должно быть пустым ([] - запрещено) |
| [^abc] | [^абв] | Любой символ, кроме a, b, or c (отрицание). Содержимое внутри квадратных скобок не должно быть пустым ([^] - запрещено) |
| [a-zA-Z] | [а-яА-я] | Символы в диапазоне от a до z или от A до Z (диапазоны). Содержимое внутри квадратных скобок не должно быть пустым ([] - запрещено) |
| Заранее обозначенные символьные классы | ||
| . | . | Любой символ, кроме терминатор ов строк. |
| \d | \ц | Какая-либо цифра: [0-9] |
| \D | \Ц | Не цифра: [^0-9] |
| \s | \п | Пробельный символ: [\t-\r\u0020\u00A0\u1680\u2000-\u2009\u200A\u202F\u205F\u2028\u2029\u3000] |
| \S | \П | Не пробельный символ: [^\t-\r\u0020\u00A0\u1680\u2000-\u2009\u200A\u202F\u205F\u2028\u2029\u3000] |
| \w | \с | Символ, допустимый в словах: [_a-zA-Z0-9\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u318F\u3300-\u33ss\u3400-\u3D2D\u4E00-\u9FFF\uF900-\uFAFF] |
| \W | \С | Символы, не участвующие в словах: [^_a-zA-Z0-9\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u00FF\u0100-\u1FFF\u3040-\u318F\u3300-\u33ss\u3400-\u3D2D\u4E00-\u9FFF\uF900-\uFAFF] |
| Символы-соответствия границ | ||
| ^ | ^ | Начало строки |
| $ | $ | Конец строки |
| Жадные квантификаторы (находят совпадения максимально возможной длины) (X – некоторая исчисляемая конструкци я) | ||
| X? | X? | X встречается один раз, или не встречается вообще |
| X* | X* | X ноль или больше раз |
| X+ | X+ | X один или больше раз |
| X{n} | X{n} | X ровно n раз |
| X{n,} | X{n,} | X хотя бы n раз |
| X{n,m} | X{n,m} | X хотя бы n, но не более m раз |
| Ленивые квантификаторы (находят совпадения минимально возможной длины) (X – некоторая исчисляемая конструкция) | ||
| X?? | X?? | X встречается один раз, или не встречается вообще |
| X*? | X*? | X ноль или больше раз |
| X+? | X+? | X один или больше раз |
| X{n}? | X{n}? | X ровно n раз |
| X{n,}? | X{n,}? | X хотя бы n раз |
| X{n,m}? | X{n,m}? | X хотя бы n, но не более m раз |
| Логические операции (X, Y – некоторая конструкция или набор конструкций) | ||
| XY | XY | X обязан следовать за Y |
| X|Y | X|Y | Либо X либо Y (предпочтительнее X) |
| (X) | (X) | X в качестве группы захвата |
| Обратные ссылки | ||
| \n | \n | То же соответствие, что было найдено группой захвата с номером n <br> Пример: <br> Регулярное выражение: '(\w)\1' <br> Строка: “aa ab ba bb” <br> Будет два совпадения – “aa”, “bb”, так как регулярное выражение, по сути, находит две подряд идущие одинаковые буквы. (\w) соответствует любой букве, а \1 является обратной ссылкой на группу захвата, и отвечает за соответствие той же букве, что и группа захвата. Если номер группы n превышает количество групп захвата, объявленных до обратной ссылки, то пользователю выбрасывается исключение ИсключениеНекорректноеРегулярноеВыражение. <br> В случае, когда необходимо указать номер группы, а затем число (например, всего захваченных групп 12, а нам нужно сделать обратную ссылку на первую группу, а после этого сразу проверить, что идет число 0 - стоит выделить обратную ссылку в отдельную группу). <br> Пример: "(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(?:\1)0" <br> Строка-совпадение: "abcdefghijkla0" |
| \k<name> | \и<имя> | То же соответствие, что было найдено группой захвата с именем name <br> Пример: <br> Регулярное выражение: '(?<test>\w)\k<test>' <br> Строка: “aa ab ba bb” <br> Будет два совпадения – “aa”, “bb”, так как регулярное выражение, по сути, находит две подряд идущие одинаковые буквы. (\w) соответствует любой букве, а \k<test> является именованной обратной ссылкой на именованную группу захвата, и отвечает за соответствие той же букве, что и именованная группа захвата. <br> Правила задания имени: имя может состоять только из строчных и заглавных букв латинского и русского алфавита, также допустимы цифры и символ нижнего подчеркивания '_'. Имя не может начинаться с цифры. <br> Если ссылка указывает на группу захвата, которая не была объявлена до ссылки, то пользователю выбрасывается ошибка ИсключениеНекорректноеРегулярноеВыражение. |
| Экранирование | ||
| \ | \ | Экранирует следующий символ. |
| Специальные конструкции (X – некоторая конструкция или набор конструкций) | ||
| (?<name>X) | (?<имя>X) | X, как именованная группа захвата с именем name |
| (?:X) | (?:X) | X, как не группа захвата |
| (?=X) | (?=X) | X, как проверка присутствия с просмотром вперед. Сопоставленная строка НЕ включается в совпадение. Данная конструкция не является группой захвата. <br> Пример: <br> Регулярное выражение: '\w+(?=a)'. <br> Строка: “bba bbb cda efd” <br> Будет два совпадения – “bb” и “cd”, так как совпадением в данном случае является любой набор букв, в конце которого стоит буква “a”. |
| (?!X) | (?!X) | X, как проверка отсутствия с просмотром вперед. Сопоставленная строка НЕ включается в совпадение. Данная конструкция не является группой захвата. <br> Пример: <br> Регулярное выражение: '[bcd]{2}(?!a)'. <br> Строка: “bca dcb dba bdf”. <br> Будет два совпадения – “dc” и “bd”, так как совпадением в данном случае является любой набор из двух букв b, с или d, после которого не стоит буква “a”. |
| (?ims) | (?рмо) | Указывается только в конце регулярного выражения. Включает флаги-настройки поиска. Пример: '\w+(?im)' |
В таблице ниже перечислены все возможные флаги-настройки поиска.
| Сокращение (EN) | Сокращение (RU) | Описание |
|---|---|---|
| i | р | Включает режим регистронезависимого поиска. То есть при выполнении операций поиска, замены, разбиения регистр символов игнорируется. |
| m | м | Многострочный режим. Изменяет значение символов "^" и "$" так, что они совпадают, соответственно, с началом и концом любой строки, а не только с началом и концом всего текста. |
| s | о | Указывает однострочный режим. Изменяет значение точки (.) так, что она соответствует любому символу (вместо любого символа, кроме терминаторов строк). |
Сравнение
Ссылочное
Иерархия типа
Базовые типы: Объект
Примеры
Общие примеры
// Пример создания образца для поиска номеров телефона, удовлетворяющих следующим шаблонам:
// 1) +7(XXX)XXX-XX-XX
// 2) 8(XXX)XXX-XX-XX
// где вместо X подставляется любая цифра от 0 до 9.
знч ОбразецДляПоискаТелефонов = новый Образец("(\\+7|8)\\(\\ц{3}\\)\\ц{3}(-\\ц{2}){2}")
// Данное объявление равносильно объявлению через литерал:
знч ОбразецДляПоискаТелефоновЛитерал = '(\+7|8)\(\ц{3}\)\ц{3}(-\ц{2}){2}'