Регулярные выражения в Qt

Регулярные выражения в Qt

Регулярные выражения в Qt реализованы классом QRegExp. Рассмотрим основные варианты его использования на примерах.

Точное совпадение регулярного выражения

В качестве примера рассмотрим регулярное выражение для проверки строки на точное соответствие директиве #include <...>:

В результате выполнения этого кода на консоли будет выведено (кроме комментариев, которые добавлены отдельно):

Совпадение произошло лишь в первом случае, поскольку приведенное регулярное выражение учитывает только ТОЧНОЕ совпадение. Этот вариант использования регулярных выражений подойдет для проверки ip-адресов, MAC-адресов, адресов электронной почты и т.д.

Если вам нужно проверить не точное совпадение с регулярным выражением, а просто его наличие где-либо в строке, то воспользуйтесь функцией QString::contains(), которая предназначена именно для этого.

Найти все совпадения для регулярного выражения

Следующий пример демонстрирует способ поиска с помощью регулярных выражений всех упоминаний #include <...>:

Представленный выше код выведет следующее:

Обратите внимание, что под выбранное регулярное выражение подошли все упоминания #include. Даже то, которое синтаксически является обычной строкой.

Также мы извлекли группу re.cap( 1 ), содержащую текст внутри <...>.

Аналогичным образом с помощью регулярных выражений вы можете искать в тексте номера телефонов; имена файлов и многое другое.

Замена текста по регулярному выражению

С помощью регулярных выражений удобно осуществлять замену фрагментов текста. Рассмотрим пример:

Записанное регулярное выражение меняет #include <...> на #include "...". На консоль будет выведено следующее:

Такая замена осуществляется с помощью группы в регулярном выражении, обернутой в скобки. Ссылка на группу делается с помощью конструкции вида \\n, где n — номер группы, соответствующей индексу в вызове re.cap( n ).

Этот прием хорошо подойдет для выполнения простых (и не очень) преобразований текста с помощью регулярных выражений, в которых легко выделяются группы.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий