我在Java项目中发现了一个有趣的正则表达式: "[\\p{C}&&\\S]"
我理解这&&意味着"设置交集",并且\S是"非空白",但是什么是\p{C},并且可以使用吗?
该java.util.regex.Pattern中的文件没有提到它.列表中唯一相似的类是\p{Cntrl},但它们的行为不同:它们都匹配控制字符,但在U + FFFF上方的Unicode字符上\p{C}匹配两次,例如PILE OF POO:
public class StrangePattern {
public static void main(String[] argv) {
// As far as I can tell, this is the simplest way to create a String
// with code points above U+FFFF.
String poo = new String(Character.toChars(0x1F4A9));
System.out.println(poo); // prints ``
System.out.println(poo.replaceAll("\\p{C}", "?")); // prints `??`
System.out.println(poo.replaceAll("\\p{Cntrl}", "?")); // prints ``
}
}
Run Code Online (Sandbox Code Playgroud)
我已经随处可见的唯一一提的是在这里 …