现在的位置: 首页 > 综合 > 正文

JDK中个别类的介绍-Pattern、Matcher

2014年11月17日 ⁄ 综合 ⁄ 共 1546字 ⁄ 字号 评论关闭

基础永远且肯定是有用的!

java.util.regex包里有接口MatchResult,两个类Matcher和Pattern,一个异常PatternSyntaxException。本文主要学习Matcher和Pattern。

Pattern:模式,正则表达式的编译表示形式。

创建Pattern实例:

public static Pattern compile(String regex)/public static Pattern compile(String regex,int flags):flags用于指定编译模式,有CASE_INSENSITIVE、MULTILINE、DOTALL、UNICODE_CASE、 CANON_EQ、UNIX_LINES、LITERAL 和 COMMENTS。

创建匹配器实例:

public Matcher matcher(CharSequence input):创建匹配器,要匹配的输入为input,模式为此模式。

简单实用方法:

public static boolean matches(String regex,CharSequence input):用于仅使用一次的模式匹配。

boolean b = Pattern.matches("a*b", "aaaaab");

String toString():返回此模式的字符串表示形式。
补:在创建模式的时候,可以通过小括号的使用指定模式分组。从左到右计算括号来对组进行编号。如((A)(B(C)))存在四个组:
1 ((A)(B(C)))      2 \A       3 (B(C))       4 (C)    组0代表整个表达式。

如a(bc):组1为bc。组可以在Matcher中得到体现和使用。

Matcher:匹配器,通过解释Pattern对字符串执行匹配操作。
三种匹配操作:
boolean matches():将整个输入序列与模式匹配。
boolean lookingAt():从输入序列的起始处与该模式匹配,不需要匹配整个区域,找到可以匹配的前缀即可。
boolean find():查找与该模式匹配的下一个子序列。前一次调用成功后匹配器不重置,从以前未匹配的第一个字符开始下次匹配。
boolean find(int start):指定开始匹配的位置。
上述操作成功后,可调用start,end,group方法获得更多信息。start返回上次匹配的起始索引,end返回上次匹配后的偏移量-(end-1)是匹配结束的字符位置。group返回以前匹配操作所匹配的输入子序列。这三个方法都有一个带有参数(int group)的重载函数,指示用Pattern的哪一组进行匹配后的信息。

例子

Pattern pattern=Pattern.compile("a(bc)");
Matcher matcher=pattern.matcher("abcdefabcd");
matcher.find();
//bc匹配信息
String str1=matcher.group(1);
int start_group1=matcher.start(1);
int end_group1=matcher.end(1);
//abc匹配信息
String str=matcher.group();
int start=matcher.start();
int end=matcher.end();

其他方法:
public Matcher region(int start,int end)设置此匹配器的区域限制。区域是输入序列的一部分。调用此方法会重置匹配器,然后设置区域,使其从 start 参数指定的索引开始,到 end 参数指定的索引结束。

int regionStart():此匹配器区域的开始索引。int regionEnd():此匹配器区域的结束索引(不包括)。

抱歉!评论已关闭.