`
RednaxelaFX
  • 浏览: 3053144 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

Java的正则表达式匹配汉字

阅读更多
刚才有同事问,顺便发出来记一下。

以前读《精通正则表达式》的时候已经知道Java的正则表达式支持\p{Inname}的形式来指定匹配属于name的Unicode区块的字符。JDK的Pattern类的文档上也有相关例子,\p{InGreek},表示匹配一个属于名为“Greek”的Unicode区块的字符。

那汉字怎么办?

Unicode里中文、日文与韩文的汉字是放在同一个(一些)区块里的,主要是在“CJK Unified Ideographs”当中,还有一些在“CJK Unified Ideographs Extension A”与“CJK Unified Ideographs Extension B”当中。
以前我没用这个方式匹配过汉字,还在想这名字里面有空格怎么办,试了一下\p{InCJK Unified Ideographs}发觉果然可以……当然,这种办法是不区分匹配到的汉字到底是中文、日文还是韩文的。也不区分简繁体。同事还问怎么用正则表达式只匹配简体中文,这个我就没想出什么好办法。

《精通正则表达式》里也提到.NET用的Unicode区块语法是\p{name}或者\p{Isname},相关文档在这里

放一demo代码:
public class TestUnicodeBlock {
    public static void main(String[] args) {
        final String regex = "\\p{InCJK Unified Ideographs}";
        final String[] testChars = {
            "\u6211", // a Chinese character
            "\u300A", // a full-width punctuation
            "\u3042", // a Hiragana character
            "\uD55C"  // a Hangul character
        };
        for (String s : testChars) {
            System.out.printf("matched %s: %b\n", s, s.matches(regex));
        }
    }
}
分享到:
评论

相关推荐

    Java 正则表达式判断字符串是否包含中文

    ### Java正则表达式判断字符串是否包含中文 在日常的软件开发过程中,我们经常会遇到需要对输入的字符串进行校验的情况。例如,在处理用户输入、文本分析或数据清洗时,可能需要判断一个字符串中是否包含中文字符。...

    PB实现的正则表达式

    在IT领域,正则表达式(Regular Expression,简称regex)是一种强大的文本处理工具,它能够进行复杂的模式匹配、查找、替换等操作。在本话题中,我们将探讨如何使用PowerBuilder 11.5这一经典的开发环境来实现正则...

    java正则表达式详解

    ### Java正则表达式详解 #### 一、正则表达式基础知识 正则表达式是一种强大的文本处理工具,能够帮助开发者高效地完成字符串的搜索、替换等操作。下面详细介绍正则表达式的几个基本元素。 ##### 1.1 句点符号(`...

    正则表达式 Java 判断字串是否合理

    根据给定的文件信息,我们可以总结出以下关于Java正则表达式的重要知识点: ### 1. 正则表达式简介 正则表达式是一种强大的文本处理工具,它能够帮助我们匹配、查找、替换等操作符合某种规则的字符串。在Java中,...

    正则表达式大全.docx

    $/` - 此正则表达式匹配完整的URL,包括HTTP或HTTPS协议、域名和可选路径。 6. IP 地址:`/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/` - 用于验证IPv4地址的...

    java正则表达式学习笔记

    以上列举了一些常见的正则表达式应用场景及其匹配规则,可以帮助开发者更好地理解和掌握Java正则表达式的使用技巧。通过这些示例,我们可以看到正则表达式在实际开发中的强大作用,并且能够灵活应用于各种复杂的字符...

    Java 正则表达式文档

    ### Java正则表达式知识点详解 #### 一、正则表达式基础概念 正则表达式(Regular Expression)是一种在字符串操作中具有强大功能的工具,它可以用来进行字符串的匹配、搜索、替换等操作。Java提供了`java.util....

    精通正则表达式(第三版)简体中文版

    - **Java中的正则表达式**:Java提供了java.util.regex包来支持正则表达式的使用。 - **JavaScript中的正则表达式**:JavaScript的正则表达式对象提供了丰富的功能,包括全局匹配、忽略大小写等选项。 - **.NET框架...

    使用正则表达式验证中文汉字输入

    在JavaScript、Python、Java等语言中,我们可以构建以下正则表达式来匹配中文汉字: 1. 匹配GB2312编码范围内的汉字: ```regex /[\uB0A1-\uF7FE]/ ``` 2. 匹配GBK编码范围内的汉字: ```regex /[\u8140-\...

    正则表达式不包涵特殊字符(除了 指定字符 以外)

    根据题目描述,我们需要构建一个正则表达式来匹配一段字符串,该字符串除了允许出现特定字符(例如下划线 `_`)之外,不允许包含任何其他特殊字符。这里的“特殊字符”通常指的是那些不在字母数字字符集范围内的符号...

    正则表达式只可以输入只允许输入中文、数字、字母、下划线

    题目要求使用正则表达式来匹配只包含中文、数字、字母以及下划线的字符串。这里涉及到的具体知识点包括: 1. **中文字符的匹配**:在Unicode编码中,中文字符通常位于`\u4e00`到`\u9fa5`之间。因此,要匹配一个中文...

    正则表达式列举 代码 项目中直接使用

    正则表达式是一种强大的文本处理工具,用于模式匹配、搜索、替换等操作,在软件开发、数据处理、网络爬虫等领域有着广泛的应用。在项目中直接使用正则表达式可以极大地提高代码的效率和可读性。以下是对给定文件中的...

    精通正则表达式中文版英文版_中文版为扫描版

    书中的例子涵盖了多种编程语言,如Perl、Java、JavaScript、.NET等,这些语言的正则表达式引擎虽然大同小异,但在细节上有所区别,学习者将了解到如何在不同环境下应用正则表达式。 对于初学者,书中会引导他们理解...

    JAVA正则表达式语法大全

    ### JAVA正则表达式语法大全 #### 正则表达式简介 正则表达式是一种用于匹配字符串中字符组合的强大工具,在编程中广泛应用于文本搜索、替换等操作。Java中的正则表达式支持标准的正则表达式语法,并通过`java.util...

    Java常用正则表达式.txt

    ### Java常用正则表达式详解 #### 匹配腾讯QQ号 **正则表达式:** [1-9][0-9]{4,} **评注:** 腾讯QQ号从10000开始。 - **解析:** 此表达式确保了QQ号的第一个数字必须是非零数字(即1到9之间的任意一个),接着...

    java正则表达式20页详细java正则表达式讲义课件可做教学用

    本文档详细介绍了Java正则表达式的各种基础知识,包括基本概念、限定符、特殊匹配符、边界匹配符以及分组构造等内容。通过这些知识点的学习,读者可以更好地理解和运用Java中的正则表达式来解决实际问题。正则表达式...

    Java正则表达式提取字符的方法实例

    总结起来,Java正则表达式提供了一种高效且灵活的方式去处理字符串匹配问题。通过学习和理解Java正则表达式及其相关API的使用,可以解决很多复杂的文本处理问题,极大地提高开发效率。上述代码实例演示了如何匹配和...

Global site tag (gtag.js) - Google Analytics