2012-04-03 69 views
1

我想創建正則表達式匹配字符串白衣AZ字符和這個,我寫下面的代碼:正則表達式與?性格和characterSequense包含Unicode字符

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。任何人都可以解釋這個原因嗎?

回答

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()); 
3

你確定你的編輯器正在用正確的編碼保存文件嗎? 我嘗試將測試保存文件設置爲UTF-8或UTF-16,並且這兩種情況都返回了我:false,true,true,false。

+0

非常感謝你,我將文件保存爲UTF-8並且它可以正常工作。 – user1310088 2012-04-03 10:34:54

相關問題