1

我正在尝试用 QRegExp替换\\u0061\u0061to ,%u0061

所以我做了这个,

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

由于斜线可以出现一次或两次,所以我用 a?来表示第一个斜线,但它不起作用,它有什么问题?

编辑

感谢 Denomales,它应该\\\\u代表\\u,我现在正在使用\\\\+u

4

1 回答 1

2

描述

根据QT qregex 文档,请参阅字符集的字符和缩写部分:

注意:C++ 编译器会转换字符串中的反斜杠。要\在正则表达式中包含 a,请输入两次,即\\. 要匹配反斜杠字符本身,请输入四次,即\\\\.

请尝试一下:

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

在此处输入图像描述

我输入了 4 个反斜杠,因此各种语言层可以正确地转义反斜杠。然后将其嵌套在方括号内并要求它出现 1 到 2 次。本质上,这应该在 letter 之前找到单反斜杠和双反斜杠u%u然后你可以像你的例子那样替换。

在我的示例中,该u角色被捕获并应作为第 1 组返回,以便稍后在您的替换中使用。

于 2013-05-27T03:59:56.150 回答