Я использую Qt5.6.
Мне нужно обрабатывать входящие данные в последовательный порт, данные будут иметь формат «AD = + 172345AD = + 272345» и так далее. Я добавляю входящие данные в QString
и используя регулярные выражения для извлечения десятичных дробей.
Если я напишу регулярное выражение:
int tmp = StrData.indexOf(QRegularExpression("AD=\+[0-9]{6}"))
это не соответствует, то есть tmp всегда -1. Но я проверил регулярное выражение Вот, и я обнаружил, что это действительно. В чем может быть проблема?
В соответствии с документы, Вы можете использовать регулярное выражение внутри QString.indexOf
чтобы получить позиция индекса первого совпадения регулярного выражения re
в строке.
Единственная проблема с регулярным выражением состоит в том, что в Qt строки имеют стиль C, то есть они могут содержать escape-последовательности. Таким образом, обратные слэши, экранирующие специальные символы регулярных выражений, должны быть удвоены.
использование
QRegularExpression("AD=\\+[0-9]{6}")
или же
QRegularExpression("AD=[+][0-9]{6}")
так как внутри [...]
, +
трактуется как буквальный символ
Других решений пока нет …