如何使用正则表达式编写Java程序以匹配字符串包含一个或多个ASCII值介于0-31和127-159之间的字符?
答案 0 :(得分:0)
[\x00-\x1E,\x7F-\x9F]+
那应该有用
答案 1 :(得分:0)
你想要的是0到31(0x00 - 0x1F)和ASCII值127(0x7F)的ASCII值,然后扩展的ASCII值从128到159(0x9f)
我发现这两种模式有效
"[\\x00-\\x1F\\x7F\\x80-\\x9F]+"
或
"[\\p{Cntrl}\\x80-\\x9F]+"
\\p{Cntrl}
表示[\\x00-\\x1F\\x7F]
示例代码:
public static void main(String[] args) throws Exception {
String string = "";
for (int i = 0; i <= 31; i++) {
string += (char)i;
}
for (int i = 127; i <= 159; i++) {
string += (char)i;
}
Matcher m = Pattern.compile("[\\p{Cntrl}\\x80-\\x9F]+").matcher(string);
if(m.matches()) {
System.out.println("We have a match");
} else {
System.out.println("We have no match");
}
}
结果:
我们有一场比赛
参考http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html