如果要删除“其他/控件Unipre”类别中的所有字符,可以执行以下操作:
System.out.println( "au0000bu0007cu008fd".replaceAll("\p{Cc}", "") ); // abcd请注意,这实际上是
'u008f'从字符串中删除(以及其他)Unipre字符,而不是从转义的表单
"%8F"字符串中删除。
如果黑名单不能很好地被一个Unipre块/类别捕获,则Java确实具有功能强大的字符类算术,可以使用相交,减法等。或者,您也可以使用否定白名单方法,即,您不必明确指定哪些字符是非法的,而是可以指定合法的,然后其他所有内容都将变为非法。
API链接
java.util.regex.Pattern
- regular-expressions.info/Character类
例子
这是一个减法示例:
System.out.println( "regular expressions: now you have two problems!!" .replaceAll("[a-z&&[^aeiou]]", "_") ); // _e_u_a_ e___e__io__: _o_ _ou _a_e __o __o__e__!!该
[…]是 字符类
。
[aeiou]匹配任何小写元音之一的东西。
[^…]是一个 否定的 字符类。
[^aeiou]匹配小写元音以外的 任何 一种。
[a-z&&[^aeiou]]匹配项
[a-z]减去
[aeiou],即所有小写辅音。
下一个示例显示了否定白名单方法:
System.out.println( "regular expressions: now you have two problems!!" .replaceAll("[^a-z]", "_") ); // regular_expressions__now_you_have_two_problems__只有小写字母
a-z是合法的;其他一切都是非法的。



