3

我正在使用 Qt5.6。

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

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

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

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

4

1 回答 1

4

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

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

采用

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

或者

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

由于 inside [...], the+被视为文字字符。

于 2016-04-13T14:47:34.847 回答