温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java正则怎么提取中文

发布时间:2026-07-24 05:51:06 来源:亿速云 阅读:118 作者:小樊 栏目:编程语言

在 Java 里用正则提取中文字符,核心就是利用 Unicode 中文范围。下面给你几种常见、实战可用的写法。


✅ 一、最常用的正则(推荐)

中文 Unicode 范围

\u4e00-\u9fa5

示例代码

import java.util.regex.*;
import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        String text = "Hello 你好,Java 正则 123!";

        Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]+");
        Matcher matcher = pattern.matcher(text);

        List<String> result = new ArrayList<>();
        while (matcher.find()) {
            result.add(matcher.group());
        }

        System.out.println(result);
    }
}

输出

[你好, 正则]

说明

  • [\\u4e00-\\u9fa5]:匹配单个中文字符
  • +:连续中文整体
  • 适合大多数业务场景

✅ 二、提取“中文 + 中文标点”

如果你还想包含中文标点(如:,。!?、):

Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5\\u3000-\\u303f\\uff00-\\uffef]+");

✅ 三、只提取“单个中文字符”

Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]");

✅ 四、判断字符串是否包含中文

public static boolean hasChinese(String str) {
    return str.matches(".*[\\u4e00-\\u9fa5].*");
}

✅ 五、替换掉非中文(只保留中文)

String text = "Hello 你好 Java 正则 123";
String result = text.replaceAll("[^\\u4e00-\\u9fa5]", "");
System.out.println(result);

输出:

你好正则

✅ 六、注意事项(很重要)

⚠️ 1. Java 字符串中 \u 要转义

"[\\u4e00-\\u9fa5]""[\u4e00-\u9fa5]"    ❌(编译期会被解析)

⚠️ 2. 生僻字问题

  • \u9fa5 不包含部分扩展汉字
  • 如需支持 生僻字 / emoji / 少数民族文字,可用:
Pattern.compile("[\\p{script=Han}]");

✅ 七、推荐总结

场景 推荐写法
一般中文 [\\u4e00-\\u9fa5]+
中文 + 标点 加上 \u3000-\u303f\uff00-\uffef
是否含中文 matches(".*[\\u4e00-\\u9fa5].*")
现代 Unicode \\p{script=Han}

如果你有具体场景(比如:从 JSON / 文件路径 / 爬虫文本 / 身份证 / 地址中提取中文),可以直接贴出来,我帮你写精准正则

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI