我试图用QRegExp将\\u0061
和\u0061
替换为%u0061
,
所以我这样做了,
QString a = "\\u0061";
qDebug() << a.replace(QRegExp("\\?\\u"), "%u");
由于斜杠可以出现一次或两次,所以我使用?
代表第一个斜杠,但是它无法正常工作,它有什么问题?
修改
感谢Denomales,它应该是\\\\u
代表\\u
,而我现在正在使用\\\\+u
。
答案 0 :(得分:2)
根据QT qregex documentation ,请参阅“字符集的字符和缩写”部分:
注意:C ++编译器会转换字符串中的反斜杠。要在正则表达式中包含
\
,请输入两次,即\\
。要匹配反斜杠字符本身,请输入四次,即\\\\
。
小心一试:
[\\\\]{1,2}(u)
我输入了4个反斜杠,因此各种语言层可以正确地逃避反斜杠。然后将其嵌套在方括号内,并要求它出现1至2次。基本上这应该在字母u
之前找到单反斜杠和双反斜杠。然后,您可以在示例中替换为%u
。
在我的示例中,u
字符被捕获,应作为第1组返回,以便稍后用于替换。