概念:
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);
}
}
}