前面介绍了如何创建正则表达式,接下来介绍在java中如何使用正则表达式进行匹配。在java中使用Pattern和Matcher来进行匹配。
Pattern对象是正则表达式编译后再内存中的表示形式,因此,正则表达式字符串必须先被编译为Pattern对象,然后再利用该Pattern对象创建对应的Matcher对象。执行匹配所涉及的状态保存在Matcher对象中,多个Matcher对象可共存同一个Pattern对象。
因此,正确的顺序为:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaab");
boolean b = m.matcher();
若某个正则表达式仅需一次使用,则可直接使用Pattern类的静态matches方法。如:
boolean b = Pattern.matches("a*b","aaaab");
Matcher类提供了如下
- find()返回目标字符串中是否包含与Pattern匹配的子串,find(int start)重置此匹配器,然后尝试查找匹配该模式、从指定索引开始的输入序列的下一个子序列。
- group()返回上一次与Pattern匹配的字串。
举个例子:
import java.util.regex.*;
public class
FindGroup
{
public static void main(String[] args)
{
Matcher m = Pattern.compile("\\w+").
matcher("Java is very easy!");
while(m.find())
System.out.println(m.group());
int i = 0;
while(m.find(i)){
System.out.println(m.group()+"\t");
i++;
}
}
}