精华内容
下载资源
问答
  • 学习了正则表达式后,感觉正则表达式很强大,但是为了更好地理解正则表达式了一个很实际的问题来分享一下自己学习的心得。本题目是招聘时的一个题目,题目大致的意思是这样的:用户每次在网上消费东西,之后会给...

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

    经常的一些小广告会有下面一下词语:”网店地址“,“销售”,“代购”;

    假如一个用户的评论是这样:这家酒店性价比高,提供海外代%……&购*&&6服……&**务”,网店地址:¥……**&*6“;

    要求:匹配出关键字,并打印出关键字和该条评论。

    就如上面这个题,我想已经表达的够清楚了,我们该怎么下手呢?我们经常的想法是一个一个扫描匹配,但是这样是不是太麻烦,而且有的评论中会有很多特殊字符,那我们怎么办呢?我的思路是这样,我们匹配的都是关键字,也就是汉字,那么可以将上述评论中所有的特殊符号(包括字母,空格,数字等)全部删除掉,只剩下汉字,然后我们去匹配关键字,这样就简单了,下来用一段程序说一下怎样去除特殊符号:

    String string1 = "我爱编w!@#程 www#

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

    String regEx="[`~!@#$%^&*()+=|{}:;\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?a-zA-Z0-9 ]";

    Pattern c = Pattern.compile(regEx);

    Matcher mc=c.matcher(string1);

    String result = mc.replaceAll("").trim();

    System.out.println(result);

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

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

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

    Pattern p = Pattern.compile("[编][程]");

    Matcher m=p.matcher(result);while(m.find()){

    System.out.println(m.group());

    }

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

    展开全文
  • JAVA 正则表达式

    热门讨论 2010-01-15 11:16:37
    Java正则表达式入门 众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时 又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则...
  • 最近需要处理一些微博文本,需要去除一些重复的中文字串,前一段时间正好用正则表达式匹配来解决微博发布日期的识别问题,所以立马想到用正则表达式解决。先说需求,例如 文本“[好][好][好][开心]”,出这些字符...

    最近需要处理一些微博文本,需要去除一些重复的中文字串,前一段时间正好用正则表达式匹配来解决微博发布日期的识别问题,所以立马想到用正则表达式解决。

    先说需求,例如 文本“[好][好][好][开心]”,找出这些字符串;

    从最简单的开始,先解决中文的问题,网上找的方法是用字符编码,unicode中汉字的字符编码是\u4E00到\9FA5,所以单个汉字可以用"[\\u4E00-\\u4E00]"表示;

    接着就可以开始构造特定模式的字符串了,我遇到的是上面提到的方括号中有单字或双字的模式,尝试结果表示为"(([\\[])([\\u4E00-\\u4E00]{1,2})([\\]]))",解释一下

    1. "(\\[)"表示匹配"[";

    2. "([\\u4E00-\\u4E00]{1,2})"表示单字或双字的字串;

    3. "(\\])"表示匹配"]";

    所以整个表示的就是"[汉字单字或双字]";

    接着再加上这个字符串的重复次数,和第二个解释中的次数设置同理,尝试结果为"((\\[)([\\u4E00-\\u9FA5a-zA-Z]{1,3})(\\])){3,}",表示汉字,字母,数字构成的1到3长的字符串出现3次及以上的模式,举例如下:

    Java程序

    public static void main(String[] args) {

    String regex = "((\\[)([\\u4E00-\\u9FA5a-zA-Z]{1,3})(\\])){3,}";

    String input = "[好好好好][好][好][好][好][好][还][还][还][还][w]"

    +"[W][2][1]FJISIFJOIESNIOHFK[P][C][C][C][C][1][2][3]"

    +"cvsdcvsdvcsvs[高兴][开心][尴尬][不开心][发]";

    Pattern pattern = Pattern.compile(regex);

    Matcher matcher = pattern.matcher(input);

    while (matcher.find())

    System.out.println(matcher.start() + " " + matcher.end() + " "

    + matcher.group() + " " + matcher.group(1) + " " + matcher.group(2)

    + " " + matcher.group(3) + " " + matcher.group(4));

    }

    运行结果:

    6 39 [好][好][好][好][好][还][还][还][还][w][W] [W] [ W ]

    62 77 [P][C][C][C][C] [C] [ C ]

    99 119 [高兴][开心][尴尬][不开心][发] [发] [ 发 ]

    基本实现了功能,后来想更进一步,想着如何做通用字符串,但深入思考感觉不可行啊,通用的话,就是多次出现的字符串本身无模式要求,也就是我们寻找重复多次的字符串时,任何字符串都可以满足要求,这样的组合就太多了,一个字要考虑重复次数,多个字也要考虑重复次数,这样模式限制就有点太泛化了。我的功能还未实现完全,就是要求方括号中是同样的字符串,但这里只能保证方括号中的为数字字母汉字的有限次组合,要验证找出的结果是否是同一段字符串,只能另写程序了(比如每读入一个字符就测试已读入的字符序列是否是未读入序列的开头,暂时只想到这个),按我正则表达式的思路似乎不可行。

    还有几个正则表达式的概念需要清楚,组,重复次数控制,元字符,转义等。

    写了短短几行程序,既让我感受到了正则表达式的强大,又感觉自己对正则表达式的理解不深(毕竟刚接触没多久),比如,正则表达式的适用场合,当我查找一个字符串时,我想到了正则表达式,却似乎忘了它最本质的功能-模式匹配,看来自己需要好好理清字符串查找与字符串匹配的含义了。

    展开全文
  • 中文问句语句分析需要提取问句中的关键字 例子1 [code="java"]这个是什么牌子的? 这个是啥价格?[/code] 我们需要提取上面语句的"牌子"和"价格"这两个关键字 用正则实现 [code...
    中文问句语句分析需要提取问句中的关键字
    例子1
    这个是什么牌子的?
    这个是啥价格?

    我们需要提取上面语句的"牌子"和"价格"这两个关键字
    用正则实现
    String reg="((?<=(什么|啥))[^的?\\?]+)";  
    Pattern pattern =Pattern.compile(reg);
    Matcher m=pattern.matcher("这个是什么牌子的?");
    while(m.find()){
    System.out.println(m.group());//输出“牌子”
    }
    m=pattern.matcher("这个是啥价格?");
    while(m.find()){
    System.out.println(m.group());//输出“价格”
    }

    按上面的实现
    完全可以实现 什么|甚么|啥 ***的|啊|呢?这种语句的关键字提取
    例子2
    现在要提取多个关键字
    这种产品是红色的还是蓝色的啊?
    这种产品是水货还是正品呢?

    我们要提取“红色”“蓝色”和 “水货”,“正品”这些关键字

    String reg="((?<=(是))[^的还呢]+)";  
    Pattern pattern =Pattern.compile(reg);
    Matcher m=pattern.matcher("这种产品是红色的还是蓝色的啊?");
    while(m.find()){
    System.out.println(m.group());//输出“红色”“蓝色”
    }
    m=pattern.matcher("这种产品是水货还是正品呢?");
    while(m.find()){
    System.out.println(m.group());//输出“水货”“正品”
    }
    展开全文
  • Java正则表达式 重复字符(串)问题

    千次阅读 2013-12-19 22:25:39
    最近需要处理一些微博文本,需要去除一些重复的中文字串,前一段时间正好用正则表达式匹配来解决微博发布日期的识别问题,所以立马想到用正则表达式解决。 先说需求,例如 文本“[好][好][好][开心]”,出这些字符...

    最近需要处理一些微博文本,需要去除一些重复的中文字串,前一段时间正好用正则表达式匹配来解决微博发布日期的识别问题,所以立马想到用正则表达式解决。

    先说需求,例如 文本“[好][好][好][开心]”,找出这些字符串;

    从最简单的开始,先解决中文的问题,网上找的方法是用字符编码,unicode中汉字的字符编码是\u4E00到\9FA5,所以单个汉字可以用"[\\u4E00-\\u4E00]"表示;

    接着就可以开始构造特定模式的字符串了,我遇到的是上面提到的方括号中有单字或双字的模式,尝试结果表示为"(([\\[])([\\u4E00-\\u4E00]{1,2})([\\]]))",解释一下

    1. "(\\[)"表示匹配"[";

    2. "([\\u4E00-\\u4E00]{1,2})"表示单字或双字的字串;

    3. "(\\])"表示匹配"]";

    所以整个表示的就是"[汉字单字或双字]";

    接着再加上这个字符串的重复次数,和第二个解释中的次数设置同理,尝试结果为"((\\[)([\\u4E00-\\u9FA5a-zA-Z]{1,3})(\\])){3,}",表示汉字,字母,数字构成的1到3长的字符串出现3次及以上的模式,举例如下:

    Java程序

    public static void main(String[] args) {
    	String regex = "((\\[)([\\u4E00-\\u9FA5a-zA-Z]{1,3})(\\])){3,}";
    	String input = "[好好好好][好][好][好][好][好][还][还][还][还][w]"
                           +"[W][2][1]FJISIFJOIESNIOHFK[P][C][C][C][C][1][2][3]" 
                           +"cvsdcvsdvcsvs[高兴][开心][尴尬][不开心][发]";
    	Pattern pattern = Pattern.compile(regex);
    	Matcher matcher = pattern.matcher(input);
    		
    	while (matcher.find()) 
                   System.out.println(matcher.start() + " " + matcher.end() + " " 
                           + matcher.group() + " " + matcher.group(1) + " " + matcher.group(2) 
                           + " " + matcher.group(3) + " " + matcher.group(4));
    }

    运行结果:

    6 39 [好][好][好][好][好][还][还][还][还][w][W] [W] [ W ]
    62 77 [P][C][C][C][C] [C] [ C ]
    99 119 [高兴][开心][尴尬][不开心][发] [发] [ 发 ]

    基本实现了功能,后来想更进一步,想着如何做通用字符串,但深入思考感觉不可行啊,通用的话,就是多次出现的字符串本身无模式要求,也就是我们寻找重复多次的字符串时,任何字符串都可以满足要求,这样的组合就太多了,一个字要考虑重复次数,多个字也要考虑重复次数,这样模式限制就有点太泛化了。我的功能还未实现完全,就是要求方括号中是同样的字符串,但这里只能保证方括号中的为数字字母汉字的有限次组合,要验证找出的结果是否是同一段字符串,只能另写程序了(比如每读入一个字符就测试已读入的字符序列是否是未读入序列的开头,暂时只想到这个),按我正则表达式的思路似乎不可行。

    还有几个正则表达式的概念需要清楚,组,重复次数控制,元字符,转义等。

    写了短短几行程序,既让我感受到了正则表达式的强大,又感觉自己对正则表达式的理解不深(毕竟刚接触没多久),比如,正则表达式的适用场合,当我查找一个字符串时,我想到了正则表达式,却似乎忘了它最本质的功能-模式匹配,看来自己需要好好理清字符串查找与字符串匹配的含义了。

    展开全文
  • 学习了正则表达式后,感觉正则表达式很强大,但是为了更好地理解正则表达式了一个很实际的问题来分享一下自己学习的心得。本题目是招聘时的一个题目,题目大致的意思是这样的:用户每次在网上...
  • 正则表达式

    2014-12-03 14:51:39
    [JAVA] javascript 正则表达式 秋雨叶 发表于 2004-12-9 14:54:13 正则表达式是一个描述字符模式的对象。 JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的...
  • 该零件高度方向的总体尺寸是 【单选题】在 select 语句的 where 子句中,使用正则表达式过滤数据的关键字是 ( )。 【简答题】简单句的基本句型及实义动词have的用法 【简答题】Passage A g翻译 【其它】制作一个简单...
  • string正则表达式

    千次阅读 2014-06-23 13:37:14
    一个正则表达式测试(只可输入中文、字母和数字)  在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到。之前在用java时特别是对用户名或密码使用正则非常爽,写脚本上用...
  • 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到。之前在用java时特别是对用户名或密码使用正则非常爽,写 脚本上用正则也非常爽,可是到了OC这却把我虐了一把,可能是对...
  • 一个正则表达式测试(只可输入中文、字母和数字)  在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到。之前在用java时特别是对用户名或密码使用正则非常爽,写脚本上用...
  • 利用正则表达式匹配标点问题

    千次阅读 2013-12-21 17:18:56
    查找资料后发现利用正则表达式做这个问题 我写了一个方法和测试的例子如下: package com.temaiba; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Sign { public static ...
  • java前台程序的开发过程中,经常要把大量JSP中的文本key抽取出来,放到Property文件中,非常麻烦,于是写了这么一个工具。这个程序在JSP文件中查找"jsp.xxxxxx"这样的字符串(一行上如果有多个这样的字符串也能...
  • 正则

    2015-11-10 14:42:00
    一个正则表达式测试(只可输入中文、字母和数字) 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到。之前在用java时特别是对用户名或密码使用正则非常爽,写脚本上用...
  • 正则

    2016-01-21 15:42:00
    ios 一个正则表达式测试(只可输入中文、字母和数字) 目录(?)[+] 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到。之前在用java时特别是对用户名...
  • 史上最全正则

    2016-03-23 11:58:00
    一个正则表达式测试(只可输入中文、字母和数字) 在项目中碰到了正则表达式的运用,正则还是非常强大的,不管什么编程语言,基本上都可以用到。之前在用java时特别是对用户名或密码使用正则非常爽,写脚本上用...

空空如也

空空如也

1 2 3
收藏数 55
精华内容 22
关键字:

java正则表达式找中文

java 订阅