正则表达式有? character和characterSequense包含unicode字符

时间:2012-04-03 10:08:18

标签: java regex

我正在尝试创建匹配Strings whit a-z字符和字符的正则表达式,我在下面编写代码:

Pattern pattern = Pattern.compile("[a-z\\?]*");
System.out.println(pattern.matcher("*").matches());
System.out.println(pattern.matcher("a").matches());
System.out.println(pattern.matcher("?").matches());
System.out.println(pattern.matcher("汉").matches());

并获得以下输出:

false
true
true
true

我希望定义的模式与“汉”不匹配并返回false,但是当你看到它返回true时。任何人都可以解释一下这个原因吗?

2 个答案:

答案 0 :(得分:3)

我刚刚尝试过,我正确地得到了错误的真假。顺便说一句,没有必要逃避'?'在括号内。这样做:

            Pattern pattern = Pattern.compile("[a-z?]*");
    System.out.println(pattern.matcher("*").matches());
    System.out.println(pattern.matcher("a").matches());
    System.out.println(pattern.matcher("?").matches());
    System.out.println(pattern.matcher("汉").matches());

答案 1 :(得分:3)

您确定您的编辑器正在使用正确的编码保存文件吗? 我尝试将测试保存文件设置为UTF-8或UTF-16,两种情况都会返回:false,true,true,false。