2013-05-26 81 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

我这样做是为了表明文本不是由我编辑或创建的。但是,谢谢你的提示,我会为未来记住这一点。 –

相关问题