正则表达式中的分组,可以解决很多关于字符串匹配的问题,简单而且强大。
下面通过一个简单问题,给大家介绍一下如何在Java中的使用。
机试题
利用正则表达式解析一个字符串,字符串由“()”、“,”和26个英文字母(不区分大小写)组成例如:
“ee,tr,fun(a,fk,ererw,ttt(aabc,eee,we,rr,),adf,rrrr,erwer,werqqqq,erttte,tttt,bbb,),adf,ade”
将上述字符串分解并输出,输出结果如下:
ee
tr
fun(a,fk,ererw,ttt(aabc,eee,we,rr,),adf,rrrr,erwer,werqqqq,erttte,tttt,bbb,)
adf
ade
*(*,*,*……)看做一个整体,以最外边一层为主。而且可以嵌套。
通过分析,输出输出红色部分为5行,那么可以把字符串分成5组,这样很可以简单搞定这个机试题。
package com.ibm.demo; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * * @author frank * @version 1.0 * */ public class T { public static void main(String[] args) { String str = "ee,tr,fun(a,fk,ererw,ttt(aabc,eee,we,rr,),adf,rrrr,erwer,werqqqq,erttte,tttt,bbb,),adf,ade"; String regx = "([a-z]{2}),([a-z]{2}),(fun\\(.+\\)),([a-z]{3}),([a-z]{3})"; Pattern p = Pattern.compile(regx); Matcher m = p.matcher(str); if (m.find()) { System.out.println(m.group(1)); System.out.println(m.group(2)); System.out.println(m.group(3)); System.out.println(m.group(4)); System.out.println(m.group(5)); } } }
输出结果:
通过上面程序,大家可以感觉到正则表达式分组功能的强大魅力,:)。