C++ Qt中的正则表达式

C++ Qt中的正则表达式,c++,regex,qt,qt5,qregularexpression,C++,Regex,Qt,Qt5,Qregularexpression,我正在使用Qt5.6 我需要在串行端口中处理传入数据,数据的格式为“AD=+172345AD=+272345”,依此类推。我将传入数据附加到QString中,并使用正则表达式提取小数 如果我写一个正则表达式: int tmp = StrData.indexOf(QRegularExpression("AD=\+[0-9]{6}")) 它不匹配,即tmp始终为-1。但是我测试了正则表达式,我发现它是有效的。可能是什么问题?根据,您可以在QString.indexOf中使用regex来获取字符串中

我正在使用Qt5.6

我需要在串行端口中处理传入数据,数据的格式为“AD=+172345AD=+272345”,依此类推。我将传入数据附加到
QString
中,并使用正则表达式提取小数

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

int tmp = StrData.indexOf(QRegularExpression("AD=\+[0-9]{6}"))
它不匹配,即tmp始终为-1。但是我测试了正则表达式,我发现它是有效的。可能是什么问题?

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

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

使用

由于在
[…]
内部,因此
+
被视为文字字符。

将反斜杠(
\\+
)加倍或将
+
放在
[]
内部(
[+]
)。
QRegularExpression("AD=\\+[0-9]{6}")
QRegularExpression("AD=[+][0-9]{6}")