Matcher类的一些方法
find()方法:依次查找与Pattern匹配的子串,一旦找到子串,下次再调用时接着向下查找
group():返回上一次与Pattern匹配的字符串(一个字符串,可能会出现多个子串与Pattern匹配成功)
end():返回上一次匹配上的字符串结束的位置+1
start():返回上一次匹配上的字符串开始的位置
matcher():返回目标字符串与pattern是否匹配
reset():将现有的Matcher应用于一个新的字符串序列
import java.util.regex.*; public class PatternTest1{ public static void main(String[] args) { //System.out.println("dfsddfgdfdsfsd撒打发斯蒂芬"); String s1 = "java is very easy"; Pattern p = Pattern.compile("\w+"); Matcher m = p.matcher(s1); while(m.find()) { System.out.println(m.group()+"子串起始的位置:" + m.start()+"结束的位置:"+m.end()); } } }
运行结果:
java子串起始的位置:0结束的位置:4 is子串起始的位置:5结束的位置:7 very子串起始的位置:8结束的位置:12 easy子串起始的位置:13结束的位置:17 请按任意键继续. . .
源码--模拟判断几个邮件地址是否合法
1 import java.util.regex.*; 2 3 public class PtternTest2{ 4 public static void main(String[] args) 5 { 6 String[] mails = { 7 "kongyeehu@163.com", 8 "kongyeehua@gmail.com", 9 "ligang@crazyit.org", 10 "wawa.abc.**" 11 }; 12 String mailRegEx = "\w{3,20}@\w+\.(com|org|cn|net|gov)"; 13 Pattern p = Pattern.compile(mailRegEx); 14 Matcher m = null; 15 for(String mail:mails) 16 { 17 if(m == null) 18 { 19 m = p.matcher(mail); 20 } 21 else 22 { 23 m.reset(mail); 24 } 25 String result = mail + (m.matches()?"是":"不是") + "有效的邮件地址"; 26 System.out.println(result); 27 } 28 29 } 30 }
Matcher类还提供了:replaceAll(“+++”)把匹配到的字符串都替换掉
replaceFirst(“ ”)只替换第一个匹配到的
String 类也有类似的split() replaceAll() replaceFirst()