Russian Qt Forum

Qt => Общие вопросы => Тема начата: phpCoder от Февраль 13, 2015, 09:47



Название: Регулярные выражения
Отправлено: phpCoder от Февраль 13, 2015, 09:47
Добрый день.
Сделал программу, которая сохраняет введенные регэкспы пользователем в INI файл (через QSettings, в винде). Все регулярки рабочие и ошибок в них нет.
Так вот когда я их считывают через QSettings из настроечного файла и вставляю в QRegularExpression, то они не работают.
Если открыть INI файл, скопировать выражение, убрав при этом лишние экранирующие символы, которые вставляет туда QSettings, в непосредственно в код программы записать - то все работает.

Вопрос: че за хрень? Может кто сталкивался? Что делать?


Название: Re: Регулярные выражения
Отправлено: __Heaven__ от Февраль 13, 2015, 10:00
Посмотрите дебагером, что у вас приходит из ini


Название: Re: Регулярные выражения
Отправлено: GreatSnake от Февраль 13, 2015, 11:36
А зачем сохраняешь/читаешь строкой, а не сразу QRegularExpression ???


Название: Re: Регулярные выражения
Отправлено: phpCoder от Февраль 13, 2015, 12:06
Все, нашел причину.
В файл надо сохранять текст выражения такой же, как используется в коде PHP, т.е. без дополнительных слешей как в C++ (из-за того, что только двойная кавычка означает строку). Т.е сохранять надо это:
Код
PHP
[a-z" ]\d+
а не это:
Код
C++ (Qt)
[a-z\" ]\\d+