求教正则表达式如何匹配
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教正则表达式如何匹配相关的知识,希望对你有一定的参考价值。
文本是:
最困难的部分,已基本完成,但我要一直关注。\NThe hardest part is mostly done,but I best keep my eye on it.
需要用正则表达式匹配硬换行符号\N前的中文里所有标点符号。
正则表达式如何处理?
1.当模式第二位是*时,且第一位字符匹配,分三种匹配模式:
1.把*当做0,就是忽略掉前两位X*,继续做匹配;
2.把*当做是1,字符串后移一位,模式后移两位跳过这个*,继续匹配;
3.把*当做>1,即可能字符串的下一位与上一位相同,所以做匹配。如果不匹配,模式后移两位。
2.当模式第二位不是*时,如果第一位匹配则全部后移一位进行匹配,否则直接返回false。 参考技术A
按照你的要求编写的程序如下(见图)
追问这个是字幕文稿中的一句,我只是想在notepad++里找出所有中文的标点,替换为空格,不是 想要Java编程找出这些标点。
追答[\W](?=.*?\\N)
正则表达式如何获取匹配的部分
String str = "sdfqweid=icmp_77733329&234123";
Pattern pattern = Pattern.compile("\\d8");
Matcher matcher = pattern.matcher(str);
String tempStr = matcher.group(1);
System.out.println(tempStr);
为什么不行呢,我想获取77733329
而且你matcher.group(1)是获取第一个分组,但是你没有使用分组,所以得不到内容。
如果正则改成"(\\d8)",那你就可以获得内容了。
或者String tempStr = matcher.group();或者String tempStr = matcher.group(0);,这会得到整个正则匹配到的内容。 参考技术A 要的那一部分用()括上,取组就行了
或者取出来后再来一次正则匹配 参考技术B String str = "sdfqweid=icmp_77733329&234123";
String reg = "\\\\d+";
Pattern pattern = Pattern.compile (reg);
Matcher matcher = pattern.matcher (str);
while (matcher.find ())
System.out.println (matcher.group ());
追问
为啥加了matcher.find就可以了???
追答这个就像是1+1=2道理一样,我也不好说,我半吊子,就是知道这样写就是了
本回答被提问者和网友采纳以上是关于求教正则表达式如何匹配的主要内容,如果未能解决你的问题,请参考以下文章