我正在尝试用 QRegExp替换\\u0061
和\u0061
to ,%u0061
所以我做了这个,
QString a = "\\u0061";
qDebug() << a.replace(QRegExp("\\?\\u"), "%u");
由于斜线可以出现一次或两次,所以我用 a?
来表示第一个斜线,但它不起作用,它有什么问题?
编辑
感谢 Denomales,它应该\\\\u
代表\\u
,我现在正在使用\\\\+u
。
根据QT qregex 文档,请参阅字符集的字符和缩写部分:
注意:C++ 编译器会转换字符串中的反斜杠。要
\
在正则表达式中包含 a,请输入两次,即\\
. 要匹配反斜杠字符本身,请输入四次,即\\\\
.
请尝试一下:
[\\\\]{1,2}(u)
我输入了 4 个反斜杠,因此各种语言层可以正确地转义反斜杠。然后将其嵌套在方括号内并要求它出现 1 到 2 次。本质上,这应该在 letter 之前找到单反斜杠和双反斜杠u
。%u
然后你可以像你的例子那样替换。
在我的示例中,该u
角色被捕获并应作为第 1 组返回,以便稍后在您的替换中使用。