使用 QRegEx 从 QString 中删除表达式



我在使用 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}", "" )

最新更新