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

标签 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");
    }

最佳答案

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

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

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

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

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

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

将匹配您在类里面的所有字母以及更多!

关于java - 正则表达式 - 接受拉丁/ucs2 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16412523/

相关文章:

java - struts2中如何动态获取session对象

java - 使用 BIRT 的多页文本报告

java - 替换字符串中的子字符串,除非字符串在引号内

java - Spring MVC 中 POST 方法后重定向

java - 从两个可膨胀的 Edittext arrayList 获取值并计算值

java - jsp获取ip地址

python - 如何使用正则表达式在字符串中查找字母及其相反的大小写?

c++ - 如何将 pcre_study 与 pcrecpp 一起使用?

javascript - 如何用lodash替换数组中的十进制数

Java正则表达式匹配模式