首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex -接受拉丁/ucs2字符

Regex -接受拉丁/ucs2字符
EN

Stack Overflow用户
提问于 2013-05-07 14:26:33
回答 1查看 248关注 0票数 0

我正在尝试编写一个regex来接受拉丁/UCS2字符。但我在这样做的时候遇到了错误。在下面的代码中,应该为模式传递“text1”。我还在做这件事。有谁能帮我弄一下这个吗?

代码语言:javascript
复制
    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");
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-07 14:41:45

什么不起作用?模式是否不匹配,或者是否存在错误消息?

我首先看到的是,你已经转义了这么多字符,这些字符不需要转义,而且一个重要的字符没有转义。

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

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

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

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

将匹配您的类和更多中的所有字母!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16412523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档