2013-05-26 77 views
1

我試圖取代\\u0061\u0061%u0061與QRegExp,爲什麼不是下面的正則表達式工作?

所以我這樣做,

QString a = "\\u0061"; 
qDebug() << a.replace(QRegExp("\\?\\u"), "%u"); 

由於斜線可以一次或兩次出現,所以我用一個?到represen的第一個斜槓,但它不起作用,它有什麼問題?

編輯

感謝Denomales,它應該是\\\\u表示\\u,和我使用\\\\+u現在。

+0

我不太確定使用什麼牌子的正則表達式QT4的,但一些熱門品牌的正則表達式的需要四個反斜槓來代表一個反斜槓,除非你能以某種方式表明原始字符串。 –

+1

如果使用QRegExp(「\\ {1,2} u」)'會發生什麼? – lurker

+0

@mbratch沒有運氣,還是'\ u0061' – daisy

回答

2

說明

QT qregex documentation,看到人物和縮寫一節人物套:

注:C++編譯器可以反斜槓字符串。要在一個正則表達式一個\,輸入兩次,即\\。要匹配反斜槓字符本身,請輸入四次,即\\\\

關懷試試這個:

[\\\\]{1,2}(u)

enter image description here

我已經進入4個反斜槓所以各種語言層可以正確地轉義反斜線。然後將其嵌套在方括號內,並要求它出現1到2次。基本上這應該在字母u之前找到單反斜槓和雙反斜槓。你可以用%u來代替,就像你的例子。

在我的例子u字符被捕獲,應返回1組要在更換後使用。

+0

+1,但請勿在直接鍵入文字時使用文字圖像。如果你這樣做,以防止反斜槓被吃掉,請注意,你可以在塊引用內使用代碼格式(正如我在我的編輯中演示的那樣)。 –

+0

我這樣做是爲了表明文本不是由我編輯或創建的。但是,謝謝你的提示,我會爲未來記住這一點。 –

相關問題