Qt中的正则表达式

Regular Expression in Qt

本文关键字:正则表达式 Qt      更新时间:2023-10-16

我使用的是Qt5.6。

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

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

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

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

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

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

使用

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

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

由于在[...]内部+被视为文字字符。