java.util,regex包中包含一个匹配操作结果的接口;以及两个类;
接口:MatchResult
MatchResult接口用来匹配操作结果,包含用于确定正则表达式匹配结果的查询方法;通过MatchResult可以查看匹配边界、组合组边界,但是不能修改
类:Matcher ; Pattern
指定为字符串的正则表达式首先必须被编译为Pattern的实例;然后再将得到的匹配模式用于创建Matcher对象,依据正则表达式,该对象可以与任意字符序列匹配。执行匹配所涉及的所有状态都驻留在匹配器中;所以多个匹配器可以共享同一模式。
典型的调用顺序是:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();//
当且仅当整个区域序列匹配此匹配器的模式时才返回 true 。
下面语句等效于上面三条语句:
boolean b = Pattern.matches("a*b", "aaaaab");
代码示例:
package javaRegexTest;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Allows you to easily try out regular expressions.
{Args: abcabcabcdefabc "abc+" "(abc)+" "(abc){2,}" }
"abc+"匹配 ab 后面跟一个或多个c
"(abc)+" 匹配一个或者多个完整的 abc 字符串
"(abc){2,}" 匹配至少连个abc字符串衔接一起
*/
public class regexTestStringMatcher {
public static void main(String[] args) {
if (args.length < 2) {
System.out.println("Usage:\njava TestRegularExpression " +
"characterSequence regularExpression+");
System.exit(0);
}
System.out.println("Input: \"" + args[0] + "\"");
System.out.println("----------------------------------------------");
for (String arg : args) {
System.out.println("Regular expression: \"" + arg + "\"");
Pattern p = Pattern.compile(arg);//将指定的字符串编译,并得到Pattern类的实例
Matcher m = p.matcher(args[0]);//创建匹配给定输入与此模式的匹配器
while (m.find()) {//尝试查找与该模式匹配的输入序列的下一个子序列,匹配成功
//则可以通过start、end、group方法获取更多信息
System.out.println("Match \"" + m.group() + "\" at positions " +
m.start() + "-" + (m.end() - 1));
}
System.out.println("----------------------------------------------");
}
}
}
输出结果:
Input: "abcabcabcdefabc"
----------------------------------------------
Regular expression: "abcabcabcdefabc"
Match "abcabcabcdefabc" at positions 0-14
----------------------------------------------
Regular expression: "abc+"
Match "abc" at positions 0-2
Match "abc" at positions 3-5
Match "abc" at positions 6-8
Match "abc" at positions 12-14
----------------------------------------------
Regular expression: "(abc)+"
Match "abcabcabc" at positions 0-8
Match "abc" at positions 12-14
----------------------------------------------
Regular expression: "(abc){2,}"
Match "abcabcabc" at positions 0-8
----------------------------------------------