Java 中有关正则表达式的类都在 java.util.regex 包里
主要有 Pattern 和 Matcher 这两个类
典型的调用顺序是
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
使用 Matcher 类,最重要的一个概念必须清楚:组(Group)
在正则表达式中,“()”定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 以及这些组和组的下标
下面我们看看一个小例子,来说明这个问题
\w(\d\d)(\w+)
这个正则表达式有三个组:
整个\w(\d\d)(\w+) 是第0组 group(0)
(\d\d) 是第1组 group(1)
(\w+) 是第2组 group(2)
我们看看和正则表达式匹配的一个字符串
x99SuperJava
group(0) 是匹配整个表达式的字符串的那部分 x99SuperJava
group(1) 是第1组(\d\d)匹配的部分 99
group(2) 是第二组(\w+)匹配的那部分 SuperJava
Matcher 类常用方法:
public boolean matches()
尝试将整个区域与模式匹配。这个要求整个输入字符串都要和正则表达式匹配,和“^$”功能相同
和find不同, find是会在整个输入字符串查找匹配的子字符串。
public boolean find()
find会在整个输入中寻找是否有匹配的子字符串
一般我们使用find的流程:
while(matcher.find()){
//在匹配的区域,使用group,replace等进行查看和替换操作
}
public int groupCount()
这个方法返回了,正则表达式的匹配的组数
public String group(int group)
这个方法提供了强大而方便的工具,可以得到指定的group所匹配的输入字符串