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

Я использую Qt5.6.

Мне нужно обрабатывать входящие данные в последовательный порт, данные будут иметь формат «AD = + 172345AD = + 272345» и так далее. Я добавляю входящие данные в QString и используя регулярные выражения для извлечения десятичных дробей.

Если я напишу регулярное выражение:

int tmp = StrData.indexOf(QRegularExpression("AD=\+[0-9]{6}"))

это не соответствует, то есть tmp всегда -1. Но я проверил регулярное выражение Вот, и я обнаружил, что это действительно. В чем может быть проблема?

3

Решение

В соответствии с документы, Вы можете использовать регулярное выражение внутри QString.indexOf чтобы получить позиция индекса первого совпадения регулярного выражения re в строке.

Единственная проблема с регулярным выражением состоит в том, что в Qt строки имеют стиль C, то есть они могут содержать escape-последовательности. Таким образом, обратные слэши, экранирующие специальные символы регулярных выражений, должны быть удвоены.

использование

QRegularExpression("AD=\\+[0-9]{6}")

или же

QRegularExpression("AD=[+][0-9]{6}")

так как внутри [...], + трактуется как буквальный символ

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]