正则表达式,程序中从复杂文本中提取信息的必备手段。
做了几个Java中正则表达式的小例子,以备参考
一. 最简单正则表达式
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*最简单模式匹配*/
public void testReg2()
{
final String EXAMPLE_TEST = "Wu Dong Qian Kun ";
Pattern pattern = Pattern.compile("\\w+");
Matcher matcher = pattern.matcher(EXAMPLE_TEST);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
}
}
执行结果
Start index: 0 End index: 2 Wu
Start index: 3 End index: 7 Dong
Start index: 8 End index: 12 Qian
Start index: 13 End index: 16 Kun
二:解析特定模式(可以用于解析properties及xml文件)
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public void testReg3()
{
final String EXAMPLE_TEST = "a=67 b=90 aac=89x";
Pattern pattern = Pattern.compile("(\\w+)=(\\w+)");
Matcher matcher = pattern.matcher(EXAMPLE_TEST);
while (matcher.find()) {
System.out.print("Start index: " + matcher.start());
System.out.print(" End index: " + matcher.end() + " ");
System.out.println(matcher.group());
System.out.println(matcher.group(0));
System.out.println(matcher.group(1));
System.out.println(matcher.group(2));
}
}
执行结果
Start index: 6 End index: 10 b=90
b=90
b
90
Start index: 11 End index: 18 aac=89x
aac=89x
aac
89x
三. 匹配中文,中文匹配的问题比较令人头疼,这里仅给出utf8字串的处理方法。
Unicode 汉字内码的汉字区为4E00-9FA5, 共有20902个汉字,程序中可以对\u4E00-\u9FA5模式进行匹配,取得相应中文信息
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*验证中文正则的匹配*/
public void testRegChinese()
{
String input = "中文语言chinese最近几天wudong武动乾坤de更新状况";
String temp = null;
Pattern p = Pattern.compile("[\u4E00-\u9FA5]+");
Matcher m = p.matcher(input);
while (m.find())
{
temp = m.group(0);
System.out.println(temp );
}
}
执行结果
中文语言
最近几天
武动乾坤
更新状况