Java正则之Unicode属性匹配的那些事

前言:最近项目中客户要求只保留文本中的字母部分,比如将处理文本 [ 文本你 好 呀, PL-g;'.*o,o 121“‘2ds -> 你好呀PLgoods ]。使用如下Java代码可以达成目的,但是对于\\PL+这种非常规的正则表达式比较陌生,那么如果延伸下需求,比如要去除文本中的数字符号、货币符号、标点符号以及控制字符等可能就无能为力,始终停留在知其然而不知其所以然的状态。本人通过查阅资料结合个人理解整理成本篇博客,目标是记录下这种正则的本质,提供一种新的方式或手段来达成文本处理目的;

public static void main(String[] args) throws IOException {
	String contents = "你 好 呀, PL-g;'.*o,o 121“‘2ds";
	contents = contents.replaceAll("\\PL+","");
	System.out.println(contents);
}

1.1  unicode字符常识

首先明确一点计算机中显示的任何一个能正常显示的符号都算作一个unicode字符,unicode字符涵盖了各语言区域下出现的字母、数字、标点、空格换行、货币符号等;日常我们提及到unicode字符,更多地关注unicode字符编码(code point),其实与正则相关的还有另外三个属性:分别为Unicode Property、Unicode Block、Unicode Script。我们可以通过以下图片加强下认知,可以发现unicode字符的这三个属性分别从三个不同的角度来描述unicode字符

1.2  Unicode Block

按照编码去接划分Unicode字符,每个Unicode字符都有唯一归属的Unicode Block,各个区间彼此联系但互不相交;一般情况下同一种语言的字符通常落在同一区间内,所以Unicode Block可以粗略地表示某类语言的字符,可以通过Unicode块来查看详细的Block划分&

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Java正则表达式可以使用Unicode属性进行匹配标点符号。在Java中,可以使用`\p{P}`来匹配任何标点字符。`\p{P}`是一个Unicode属性,表示标点字符属性Unicode属性可以进一步细分为多个子属性,用于更具体地描述字符属性Java正则表达式数据是由Unicode组织提供的,你可以在Unicode官方网站上找到具有特定属性字符列表。如果你想查看某个字符具有哪些属性,你可以查看Unicode数据文档,其中每一行是一个字符,包含有关字符的信息。希望这些信息对你有帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java正则表达式经典实例](https://download.csdn.net/download/yanglijunlilinhan/4924766)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [[转]java正则表达式匹配标点符号](https://blog.csdn.net/haha0515/article/details/84469393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值