我在使用 QRegEx 从 QString 中删除表达式时遇到问题。我尝试了无数的正则表达式无济于事。我做错了什么?
示例文本(QString myString( 在本例中,myString 包含"\u0006\u0007\u0013Hello"。
myString.remove(QRegExp("\[u][0-9]{4}"));
它不会删除 \uXXXX 的任何实例,其中 X = 数字。
但是,当我具体时,例如:
myString.remove("u0006");
它确实删除了它。
字符串文本并不总是与字符序列相同
for (char c : "u0006u0007u0013Hello".toCharArray()) {
System.out.println( c + " (" + (int)c + ")" );
}
System.out.println( "--------------" );
for (char c : "\u0006\u0007\u0013Hello".toCharArray()) {
System.out.println( c + " (" + (int)c + ")" );
}
在第一个示例中,u0006
编码 unicode 代码点,而在第二个示例中,字符串实际上包含一个反斜杠。 字符串文本仅在编译时存在,在运行时它们是字符序列。 正则表达式在字符序列上工作,而不是在字符串上工作,并且反冲也有特殊意义,需要转义。
另请注意,u0041
是编码A
的另一种方式。
也许您正在寻找的是 unicode 类别,也许以下内容会有所帮助:
string.replaceAll( "\p{Cc}", "" )