| RegExpr |
| Точки входа | |
| Действия: | |
| doExec | Выполнение регулярного выражения |
| doExecNext | Поиск следующего совпадения |
| События: | |
| onMatch | Найдено совпадение |
| onNoMatch | Совпадений больше нет |
| Свойства: | |
| MatchPos | Позиция совпадения в строке |
| MatchLen | Длинна совпадения |
| Match | Само совпадение |
| Данные: | |
| Expression | Выражение |
| InputStr | Строка, в которой искать |
| Значения параметров | |
| Expression | Выражение |
| InputStr | Строка, в которой искать |
| Дополнительная информация и рекомендации | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
RegExpr - универсальный инструмент для проверки пользовательского ввода на соответствие шаблонам. Вы можете проверить синтаксическую корректность e-mail адреса, извлечь номера телефонов из неформализованного текста, найти необходимую информацию в web-странице - возможности ограничены только Вашим воображением. Правила (шаблоны) можно изменять не перекомпилируя Вашу программу! В качестве языка правил используется подмножество регулярных выражений Перла (Perl regular expressions, regexp). Регулярные выражения - это широкоиспользуемый способ описания шаблонов для поиска текста и проверки соответствия текста шаблону. Специальные метасимволы позволяют определять, например, что Вы ищете подстроку в начале входной строки или определенное число повторений подстроки. На первый взгляд регулярные выражения выглядят страшновато (ну хорошо, на второй - еще страшнее ;) ). Однако Вы очень быстро оцените всю их мощь. Они съэкономят Вам многие часы ненужного кодирования, а в некоторых случаях будут и быстрее работать, чем вручную закодированные проверки. Простое сравнение Любой символ совпадает с самим собой, если он не относится к специальным метасимволам описанным чуть ниже. Последовательность символов совпадает с такой же последовательностью во входной строке, так что шаблон "bluh" совпадет с подстрокой "bluh'' во входной строке. Пока все просто, не так ли? Если необходимо, чтобы метасимволы или escape-последовательности воспринимались как обычные символы, их нужно предварять символом "\", например, метасимвол "^" обычно совпадает с началом строк, однако, если записать его как "\^", то он будет совпадать с символом "^", "\\" совпадает с "\" и т.д.
Примеры:
Escape-последовательности Любой символ может быть определен с помощью escape последовательности, так же как это делается в языках C или Perl: "\n'' означает начало строки, "\t'' - табуляцию и т.д.. Вообще, \xnn, где nn это последовательность шестнадцатеричных цифр, означает символ с ASCII-кодом nn. Если необходимо определить двухбайтный (Unicode) символ, используйте формат '\x{nnnn}', где 'nnnn' - одна или более шестнадцатеричных цифр.
Примеры:
Перечни символов Вы можете определить перечень, заключив символы в []. Перечень будет совпадать с любым одним символом перечисленным в нем. Если первый символ перечня (сразу после "['') - "^'', то такой перечень совпадает с любым символом не перечисленным в перечне.
Примеры:
Внутри перечня символ "-'' может быть использован для определения диапазонов символов, например a-z представляет все символы между "a'' и "z'', включительно. Если Вам необходимо включить в перечень сам символ "-'', поместите его в начало или конец перечня или предварите '\'. Если Вам необходимо поместить в перечень сам символ ']', поместите его в самое начало или предварите '\'.
Примеры:
Метасимволы Регулярное выражение может состоять из обычных символов; в этом случае оно будет соответствовать заданной комбинации символов в строке. Однако, подлинную силу регулярным выражениям придает возможность использования в них специальных метасимволов. Существует несколько групп метасимволов. Рассмотрим их по порядку. Метасимволы - разделители строк
Примеры:
Метасимвол "^" по умолчанию совпадает только с началом входного текста, а метасимвол "$" - только с концом текста. Внутренние разделители строк, имеющиеся в тексте, не будут совпадать с "^" и "$". Однако, если Вам необходимо работать с текстом как с многострочным, чтобы "^" совпадал после каждого разделителя строки внутри текста, а "$" - перед каждым разделителем, то Вы можете включить модификатор /m. Метасимволы \A и \Z аналогичны "^" и "$", но на них не действует модификатор /m, т.е. они всегда совпадают только с началом и концом всего входного текста. Метасимвол "." по умолчанию совпадает с любым символом, однако, если Вы выключите модификатор /s, то "." не будет совпадать с разделителями строк. Обратите внимание, что "^.*$" (шаблон для пустой строки) не совпадает с пустой строкой вида \x0D\x0A, но совпадает с \x0A\x0D. Метасимволы - стандартные перечни символов
Стандартные перечни \w, \d и \s можно использовать и внутри перечней символов.
Примеры:
Метасимволы - границы слов
Граница слова \b это точка между двумя символами, один из которых удовлетворяет \w, а другой - \W (в любом порядке), при этом перед началом и после конца строки подразумевается \W. Метасимволы - повторения
Таким образом {n,m} задает минимум n повторов и максимум - m. Повторитель {n} эквивалентен {n,n} и задает точно n повторов. Повторитель {n,} задает минимум n повторов. Теоретически величина параметров n и m не ограничена, но рекомендуется не задавать большие значения, поскольку в некоторых ситуациях это может потребовать существенных затрат времени и ресурсов памяти компьютера при обработке такого повторителя в связи с рекурсивным характером работы. Если фигурные скобки встречаются в "неправильном" месте, где они не могут быть восприняты как повторитель, то они вопринимаются просто как символы.
Примеры:
Метасимволы - варианты
Вы можете определить перечень вариантов, используя метасимвол "|" для их разделения, например "fee|fie|foe" найдет "fee" или "fie" или "foe", (так же как "f(e|i|o)e"). В качестве первого варианта воспринимается все от предыдущего метасимвола "(" или "[" или от начала выражения до первого метасимвола "|", в качестве последнего - все от последнего "|" до конца выражения или до ближайшего метасимвола ")". Обычно, чтобы не запутаться, набор вариантов всегда заключают в скобки, даже если без этого можно было бы обойтись. Варианты пробуются начиная с первого и попытки завершаются сразу же как удастся подобрать такой при котором совпадет вся последующая часть выражения. Это означает, что варианты не обязательно обеспечат "жадное" поведение. Например, если применить выражение "foo|foot" ко входной строке "barefoot", то будет найдено "foo" так это первый вариант который позволил совпасть всему выражению. Обратите внимание, что метасимвол "|" воспринимается как обычный символ внутри перечней символов, например, [fee|fie|foe] означает ровно то же самое что и [feio|].
Примеры:
Метасимволы - подвыражения Использование круглых скобок в регулярном выражении приводит к тому, что подстрока, соответствующая образцу в скобках, запоминается в специальном буфере. Для доступа к n-ной запомненной подстроке внутри регулярного выражения используется конструкция \n, где n может принимать любые значения, начиная с 1. Модификаторы служат для изменения режимов работы RegExpr. Любой модификатор может меняться с помощью специальной конструкции (?...) внутри регулярного выражения. Разные операции с регулярными выражениями используют разные модификаторы для уточнения выполняемой операции.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Примеры: RegExpr |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||