Qt 中的正则表达式
Regular Expression in Qt
我正在使用Qt5.6。
我需要处理串口传入的数据,数据格式为"AD=+172345AD=+272345"等等。我将传入数据附加到 QString
并使用正则表达式提取小数。
如果我写一个正则表达式:
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}")
因为在 [...]
中,+
被视为文字字符。
我正在使用Qt5.6。
我需要处理串口传入的数据,数据格式为"AD=+172345AD=+272345"等等。我将传入数据附加到 QString
并使用正则表达式提取小数。
如果我写一个正则表达式:
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}")
因为在 [...]
中,+
被视为文字字符。