c++ - Qt 中的正则表达式

标签 c++ regex qt qt5 qregularexpression

我正在使用 Qt5.6。

我需要处理串口传入的数据,数据格式为“AD=+172345AD=+272345”等。我将传入数据附加到 QString 并使用 Regex 提取小数。

如果我写一个正则表达式:

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

它不匹配,即 tmp 始终为 -1。但我测试了正则表达式 here , 我发现它是有效的。可能是什么问题?

最佳答案

根据 docs , 你可以使用 QString.indexOf 中的正则表达式来获取正则表达式 re 在字符串中的第一个匹配项的索引位置.

正则表达式的唯一问题是在 Qt 中,字符串是 C 风格的,即它们可以包含转义序列。因此,转义正则表达式特殊字符的反斜杠必须加倍。

使用

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

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

因为在 [...] 中,+ 被视为文字字符。

关于c++ - Qt 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36601836/

相关文章:

c++ - cout << "\n"[a==N] 是什么意思?做?

python - 如何用不同的表达式格式化原始字符串?

javascript - JS正则表达式匹配字符串中的所有单词

javascript - 如何在 mongodb 的 angularjs 中使用变量模式

qt QTranslator 重用

c++ - 在前景中呈现文本

c++ - 如何解释 kcachegrind 的结果

c++ - 为什么标准库的一部分在单独的命名空间中

c++ - 并行运行多个 QEventLoop(对于 QtNetwork)

qt - 调用 C++ 代码来响应 QML 按钮的最正式方法是什么?