C++ Qt中的正则表达式
我正在使用Qt5.6 我需要在串行端口中处理传入数据,数据的格式为“AD=+172345AD=+272345”,依此类推。我将传入数据附加到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来获取字符串中
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}")