用一个main程序展示下
public static void main(String[] args){
String text = "SSM<br>LOC<br>WUH 222046<br>CNL<br>CZ2834<br>23FEB16 23FEB16 2<br>CANWUH<br>RMK:NO PROT<br>=";
text = text.replaceAll("<br>", "_");
String singleLegFlightRegex = "^SSM[\\w\\s]+(CZ[0-9]{3,4}[a-zA-Z\\s]?)_(\\w{7}\\s\\w{7}\\s[1-7]{1})[_\\w\\s\\.\\(\\)]+([A-Z\\s]{6,7})";
//核心代码,匹配与查找
Pattern pattern = Pattern.compile(singleLegFlightRegex);
Matcher matcher = pattern.matcher(text);
if(matcher.find()){
System.out.println(String.format("%6s,%16s,%s", matcher.group(1),matcher.group(2),matcher.group(3)));
}
}
输出的结果:CZ2834,23FEB16 23FEB16 2,CANWUH
简单说明下, matcher.find() 会依次定位到符合regex的所有片段。 matcher.group(int i)这个对应整个片段中你的regex的子pattern, 1代表第一个(pattern),
在上述的例子中就是指(CZ[0-9]{3,4}[a-zA-Z\\s]?),依次类推。 0是整个匹配到的片段。
因此用来在一段文本中提取信息。定义一个类似regex=".*(pattern1).*(pattern2).*",匹配之后利用matcher.group(i)来提取。
原文:http://www.cnblogs.com/surprizeFuture/p/5221055.html