Java之正则表达式在字符串中查找中文

转自:http://blog.csdn.net/csdn_yaobo/article/details/48377757 本来是要收藏的,但是不知怎么了,点了收藏没有反应,只好先转载一下,等能收藏的时候,会删除此文章

学习了正则表达式后,感觉正则表达式很强大,但是为了更好地理解正则表达式,找了一个很实际的问题来分享一下自己学习的心得。本题目是招聘时的一个题目,题目大致的意思是这样的:用户每次在网上消费东西,之后会给商家评论,但是这个评论中会有许多人评论一下小广告,为了能找出这些评论,我们假设这样一个场景:

1 经常的一些小广告会有下面一下词语:”网店地址“,“销售”,“代购”; 2 3 假如一个用户的评论是这样:这家酒店性价比高,提供海外代%……&*&&6服……&**务”,网店地址:¥……**&*6“; 4 5 要求:匹配出关键字,并打印出关键字和该条评论。 6 7 就如上面这个题,我想已经表达的够清楚了,我们该怎么下手呢?我们经常的想法是一个一个扫描匹配,但是这样是不是太麻烦,而且有的评论中会有很多特殊字符,那我们怎么办呢?我的思路是这样,我们匹配的都是关键字,也就是汉字,那么可以将上述评论中所有的特殊符号(包括字母,空格,数字等)全部删除掉,只剩下汉字,然后我们去匹配关键字,这样就简单了,下来用一段程序说一下怎样去除特殊符号: 8 9 10 11 String string1 = "我爱编w!@#程 www#

她不5454 dadad &*$()###(爱编dadada程w!”;

1 String regEx="[`~!@#$%^&*()+=|{}:;\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?a-zA-Z0-9 ]"; 2 Pattern c = Pattern.compile(regEx); 3 Matcher mc=c.matcher(string1); 4 String result = mc.replaceAll("").trim(); 5 System.out.println(result);

解释一下上面的程序:我给了这样一句话“我爱编w!@#程 www#

她不5454 dadad &*$()###(爱编dadada程w!”,然后从这句话中找出匹配“编程”关键字;然后并输出,上面regEx是正则表达式,目的是过滤掉所有特殊字符,可能我写的这个有漏掉的字符,可以根据自己的需要修改,这样我们就将这句话经过过滤变成了下面这样:

上面已经去除掉特殊符号了,下来是最关键的是怎样匹配关键字呢?又用一个简单的程序示例说一下:

1Pattern p = Pattern.compile("[编][程]"); 2 Matcher m = p.matcher(result); 3 while(m.find()){ 4 System.out.println(m.group()); 5 6 }

上面那个“(“[编][程]”)”就是匹配关键字,不能写成“[编程]”,如果写成“[编程]”就会出现每个字和上面那句话匹配,而不是一个词语匹配,和我们想要的结果截然不同,这个可以参考正则表达式的概念(写到一个里相当雨或的概念,写到两个里就是两个条件是且的意思如:[0-9,a-z]与[0-9][a-z])。如果有匹配的,输出匹配的关键字。下面是输出的结果,这句话中出现了两次编程,我们都匹配出来了,而且都输出来了。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解

Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593

P2P技术揭秘.P2P网络技术原理与典型系统开发

Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E

KVM调整cpu和内存

一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid

Java之正则表达式在字符串中查找中文 - HelloWorld