正则表达式 - 接受拉丁/ ucs2字符

时间:2013-05-07 06:26:33

标签: java regex

我正在尝试编写一个正则表达式来接受拉丁语/ UCS2字符。但是这样做我会收到错误。在下面的代码中,'text1'应该传递给模式。我还在努力。有人可以帮助我解决这个问题吗?

    String text1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz  !\"#$%&'()*+,-./:;<=>?@"
                    + "{|}~¡ ";
            String pattern = "^[a-zA-Z0-9\\*\\?\\$\\[\\]\\(\\)\\|\\{\\}\\/\\'\\#\\~\\.,;\"\\<=\\>-@%&!+:~¡   ]+$";
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(text1);
    if (m.find()) {
            System.out.println("true");
    }

1 个答案:

答案 0 :(得分:1)

什么不起作用?模式不匹配或是否有错误消息?

我首先看到你逃脱了这么多角色,不需要进行转义,也不会转义重要的角色。

在角色类中,当它位于第一个位置时,只有少数几个字符具有特殊含义[]-^。您尚未转义-,这可能会导致错误,请尝试:

String pattern = "^[a-zA-Z0-9*?$\\[\\]()|{}/'#~.,;\"<=>\\-@%&!+:~¡ £¤¥ §¿ ÄÅÆÇÉÑÖØÜßàäåæ èéìñòöøùü  ]+$";

接下来是:看看Unicode Properties/Scripts。你可以,例如使用\\p{L}匹配任何语言的字母。

String pattern = "^[\\p{L}\\p{M}0-9*?$\\[\\]()|{}/'#~.,;\"<=>\\-@%&!+:~¡ £¤¥ §¿]+$";

会匹配您在班级中的所有字母和更多