Qt

2016-04-13 33 views
3

'da Normal İfade Qt5.6 kullanıyorum.Qt

Gelen verileri bir seri bağlantı noktasında işlemem gerekiyor, veriler "AD = + 172345AD = + 272345" biçiminde olacaktır. Gelen verileri QString'a eklerim ve ondalıkları ayıklamak için Regex'i kullanırım. Ben normal bir ifade yazarsanız

:

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

o yani tmp uymuyor her zaman -1. Fakat regex here'u test ettim ve geçerli olduğunu buldum. Sorun ne olabilir?

+3

Ters eğik çizgiyi ('\\ +') ya da '+' içindeki '[]' ('[+]') koyun. –

cevap

4

docs başı olarak, dize düzenli ifadenin re ilk maçın endeksi pozisyonunu almak için QString.indexOf içindeki normal ifadeler kullanabilirsiniz.

Normal ifadedeki tek sorun, Qt cinsinden dizelerin C stilidir, yani çıkış dizileri içerebilir. Böylece, regex özel karakterlerden kaçan ters eğik çizgi iki katına çıkarılmalıdır.

kullanımı

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

veya

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

içinde [...] beri + harf karakter olarak işlenir.