2016-04-13 51 views
3

我正在使用Qt5.6。在Qt中的正則表達式

我需要在串口處理輸入數據,數據格式爲「AD = + 172345AD = + 272345」等等。我將傳入的數據追加到QString並使用Regex提取小數。

如果我寫了一個正則表達式:

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

不匹配,即TMP始終是-1。但我測試了正則表達式here,我發現它是有效的。可能是什麼問題?

+3

將反斜槓('\\ +')加倍或將'+'放在'[]'('[+]')內。 –

回答

4

按照該docs,您可以使用正則表達式內QString.indexOf得到的字符串在正則表達式re的第一場比賽的索引位置。

正則表達式的唯一問題是在Qt中,字符串是C風格的,即它們可以包含轉義序列。因此,逃避正則表達式特殊字符的反斜槓必須加倍。

使用

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

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

因爲內部[...],所述+被視爲文字字符。