jdk提供的正则表达式是非常强大的,只要用过正则表达式的程序员应该是为其功能叹为观止。不过,正则表达式中的一个group概念相信应该不多人熟悉。
正则表达式中的group,主要是用来区分子序列的,所谓子序列是用()之内的表达式。下面以一段程序为例
String regex = "\\$\\{(I)(love)(java)\\}";
System.out.println(Pattern.compile(regex).matcher("${Ilovejava}P)").groupCount());
运行上面的代码段,结果为:3
其中(I)为一个组, (love)为一个组,(java)为一个组。
也许有人觉得这只是一个小功能,但是正则表达式的group,还有一个更加强大的地方就是在String.replaceAll方法中。
public
StringreplaceAll(
String regex,
String replacement)
其中第一个参数当然是政则表达式,第二个一般是普通的文本;但是第二个参数可以应用group的地方,这个功能用在一些场合是非常方便的。
比如,下面这个例子 <driverClass>${driverClass}</driverClass>,要将${}去掉,即将这个例子替换成<driverClass>driverClass</driverClass>,可以用下面的代码来替换。例如
String text = "<driverClass>${driverClass}</driverClass>";
String result = replaceStr(text,"\\$\\{(driverClass)\\}","$1");
System.out.println("result is:"+result); 运行结果:result is:<driverClass>driverClass</driverClass>
从上面可以看出,$1就是正则表达式中匹配的第一个序列,同样$2...表示第几个序列。如果$index中的index超出了表达式中子序列的个数的话,将抛出异常信息。 $0表示整个正则表达式。
posted on 2006-08-15 15:30
jspark 阅读(476)
评论(0) 编辑 收藏