w1100n
This site is best viewed in Google Chrome
wiloon, 8/19/2012 13:17 | Tag:

[java] import java.util.*; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Fenzhu { public static void main(String[] args) { Pattern p = Pattern.compile("(/d{3,5})([a-z]{2})"); String s = "123aa-34345bb-234cc-00"; Matcher m = p.matcher(s); while(m.find()) { System.out.println("m.group():"+m.group()); //打印所有 System.out.println("m.group(1):"+m.group(1)); //打印数字的 System.out.println("m.group(2):"+m.group(2)); //打印字母的 System.out.println(); } System.out.println("捕获个数:groupCount()="+m.groupCount()); … Continue reading

wiloon, 8/19/2012 11:35 | Tag:

java正则表达式中的  ? 是惰性匹配,具体的看下面的例子: [java] Pattern pattern = Pattern.compile("<.*>"); Matcher matcher =pattern.matcher("<a href="index.html">主页</a>"); System.out.println(matcher.replaceAll("")); [/java] 将输出空,因为没有加问号,此时进行的是最长匹配(贪婪匹配) 可以做如果更改 [java] Pattern pattern = Pattern.compile("<.*>"); Matcher matcher =pattern.matcher("<a href="index.html">主页[color=red]</a[/color]"); System.out.println(matcher.replaceAll("")); [/java] 将输出:主页</a 如果把程序修改为: [java] Pattern pattern = Pattern.compile("<.*?>"); Matcher matcher =pattern.matcher("<a href="index.html">主页</a>"); System.out.println(matcher.replaceAll("")); [/java] 将输出:主页 不加 ? 表示贪婪,加 ? 表示勉强,区别如下: 勉强是从左边一个一个地吃直到匹配为止,不加 ?的是一口吃掉整个字符串,然后从最后一个一个地吐出来直到匹配为止 字符串 a=====b=====b=== a.*b 将匹配满足条件最长的字符串 a=====b=====b 工作方式: 首先将:a=====b=====b=== 全部吃掉,从右边一个一个地吐出来 1. a=====b=====b=== … Continue reading

wiloon, 8/19/2012 11:08 | Tag:

3位数字 d{3}   众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。

辽ICP备14012896