• 支持Unicode的Java正则表达式?


    您正在寻找的是 Unicode 属性。

    eg\p{L}是来自任何语言的任何类型的字母

    所以匹配这样一个中文单词的正则表达式可能类似于

    \p{L}+
    

    有很多这样的属性,有关更多详细信息,请参阅 regular-expressions.info

    另一种选择是使用修饰符

    Pattern.UNICODE_CHARACTER_CLASS

    在 Java 7 中,有一个新属性Pattern.UNICODE_CHARACTER_CLASS可以启用预定义字符类的 Unicode 版本,有关更多详细信息和链接,请参阅我的答案here

    你可以做这样的事情

    Pattern p = Pattern.compile("\\w+", Pattern.UNICODE_CHARACTER_CLASS);
    

    并且\w将匹配来自任何语言的所有字母和所有数字(当然还有一些组合字符的单词,例如_)。

     

    \u03FB要匹配单个字符,您可以简单地将它们作为文字或通过语法包含在一个字符类中。

    显然,您通常无法列出表意语言中所有允许的字符。为了使正则表达式根据其类型或代码块处理 unicode 字符,支持此处定义的各种其他转义。查看“Unicode 支持”部分,特别是对Character类和 Unicode 标准本身的引用。

     

    为了解决 NLS 支持并避免接受英文特殊字符,我们可以使用以下模式...

    [a-zA-Z0-9 \u0080-\u9fff]*+

    对于 UTF 代码点参考:http://www.utf8-chartable.de/unicode-utf8-table.pl

    代码片段:

    1. String vowels = "అఆఇఈఉఊఋఌఎఏఐఒఓఔౠౡ";
    2. String consonants = "కఖగఘఙచఛజఝఞటఠడఢణతథదధనపఫబభమయరఱలళవశషసహ";
    3. String signsAndPunctuations = "కఁకంకఃకాకికీకుకూకృకౄకెకేకైకొకోకౌక్కౕకౖ";
    4. String symbolsAndNumerals = "౦౧౨౩౪౫౬౭౮౯";
    5. String engChinesStr = "ABC導字會";
    6. Pattern ALPHANUMERIC_AND_SPACE_PATTERN_TELUGU = Pattern
    7. .compile("[a-zA-Z0-9 \\u0c00-\\u0c7f]*+");
    8. System.out.println(ALPHANUMERIC_AND_SPACE_PATTERN_TELUGU.matcher(vowels)
    9. .matches());
    10. Pattern ALPHANUMERIC_AND_SPACE_PATTERN_CHINESE = Pattern
    11. .compile("[a-zA-Z0-9 \\u4e00-\\u9fff]*+");
    12. Pattern ENGLISH_ALPHANUMERIC_SPACE_AND_NLS_PATTERN = Pattern
    13. .compile("[a-zA-Z0-9 \\u0080-\\u9fff]*+");
    14. System.out.println(ENGLISH_ALPHANUMERIC_SPACE_AND_NLS_PATTERN.matcher(engChinesStr)
    15. .matches());

  • 相关阅读:
    axios 源码简析
    软件定义汽车产业生态创新白皮书
    springboot项目的配置和基本案例练习
    用lstm进行多输入但单输出的预测,有八组输入特征,其中四组范围是-100到100之间,其他四组是-5到5之间,可以只对-100到100之间的进行归一化到(-1,1)而-5到5之间的不进行归一化吗
    web概述13
    谷歌最新版本下载最新驱动网址chrome driver Version: 122.0.6261.111
    一文看懂个税2022
    腾讯云国际站-阿里云OSS如何迁移到腾讯云COS?腾讯云cos迁移教程
    微信小程序 - 入门篇
    1.驱动的认知
  • 原文地址:https://blog.csdn.net/allway2/article/details/126070966