Java正则表达式匹配一个字符串包含一个或多个ASCII值在0-31到127-159之间的字符?

时间:2015-05-27 17:10:11

标签: java regex

如何使用正则表达式编写Java程序以匹配字符串包含一个或多个ASCII值介于0-31和127-159之间的字符?

2 个答案:

答案 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