正则表达式,程序中从复杂文本中提取信息的必备手段。
做了几个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 ); } }
执行结果
中文语言 最近几天 武动乾坤 更新状况