概念:
1, 模式匹配:就是检索与指定模式匹配的字符串。Java提供了专门进行模式匹配的类,在java.util.regex。
1) 建立模式对象:
使用Pattern类创建一个对象,称为模式对象。它调用类方法compile(String pattern)完成这一任务,参数pattern是一个正则表达式,称为模式对象使用的模式。若pattern指定的正则表达式有错,compile方法将抛出异常,PatternSyntaxException。
Pattern类可以调用类方法compile(String regex,int flag)返回一个pattern对象,
2) 建立匹配对象
模式对象调用方法matcher(CharSequence input);返回一个Matcher对象m,称为匹配对象,参数input可以是任何实现了CharSequence接口的类创建的对象。String和StringBuffer类都使用了CharSequence接口。
Matcher 对象可以使用3个方法寻找参数Input指定的字符序列中是否有与模式pattern匹配的子序列。
a) public boolean find();寻找input中第一个与模式pattern匹配的子序列,若find()返回true,m调用start()和end()可以得到该匹配模式子序列在input中的开始位置和结束位置。
b) public boolean matches();判断input是否完全与pattern匹配
c) public Boolean lookingAt();判断从input开始位置是否有与pattern匹配的子序列。若返回True, m调用start()和end()可以得到lookingAt()方法找到的匹配模式子序列在input中的开始位置和结束位置。
d) public Boolean find(int start);
e) public string replaceAll(String replacement);
f) public String replaceFirst(String replacement);
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TestPattern {
public static void main(String[] args) {
Pattern p ;
Matcher m ;
String s1 = "0A1A2A3A4A5A6A7A8A9";
p = Pattern.compile("\\dA\\d");
m = p.matcher(s1);
System.out.println("matches1:"+m.matches());
while (m.find()) {
String str = m.group();
System.out.println("从"+m.start()+"到"+m.end()+"匹配模式子序列:");
System.out.println(str);
}
String temp = m.replaceAll("***");
System.out.println(temp);
System.out.println(s1);
m = p.matcher("9A0A0A3");
if (m.matches()) {
String str = m.group();
System.out.println(str);
System.out.println("matches:"+m.matches());
System.out.println("find:"+m.find());
}else {
System.out.println("不完全匹配!");
}
if (m.lookingAt()) {
String str = m.group();
System.out.println(str);
}
}
}