Matcher

Matcher

Matcher对象是一个状态机器,它依据Pattern对象做为匹配模式对字符串展开匹配检查,此类的实例用于多个并发线程是不安全的。
Matcher类的构造方法是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例。

获取Matcher实例

Pattern p=Pattern.compile("\\d+"); 
Matcher m=p.matcher("22bb23"); 
m.pattern();//返回p 也就是返回该Matcher对象是由哪个Pattern对象的创建的 

Pattern pattern()

pattern()返回parentPattern,返回由此匹配器解释的模式,即构造器传入的Pattern对象。

int groupCount()

返回此匹配器模式中的捕获组数。根据惯例,零组表示整个模式。

String group()

返回当前查找而获得的与组匹配的所有子串内容。group()实际调用了group(int group)方法,参数group为0。组零表示整个模式。

String group(int group)

返回当前查找而获得的与组匹配的所有子串内容。

int start()

返回当前匹配的子串的第一个字符在目标字符串中的索引位置 。start()方法返回的是匹配器的状态first。

int start(int group)

返回当前匹配的指定组中的子串的第一个字符在目标字符串中的索引位置 。

int end()

返回当前匹配的子串的最后一个字符的下一个位置在目标字符串中的索引位置 。end()方法返回的是匹配器的状态last。

int end(int group)

返回当前匹配的的指定组中的子串的最后一个字符的下一个位置在目标字符串中的索引位置 。

boolean find()

在目标字符串里查找下一个匹配子串。如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。

boolean find(int start)

重置此匹配器,然后尝试查找匹配该模式,从指定的位置开始查找下一个匹配的子串。如果匹配成功,则可以通过 start、end 和 group 方法获取更多信息。

int regionStart()

报告此匹配器区域的开始索引。end()方法返回的是匹配器的状态from。

int regionEnd()

报告此匹配器区域的结束索引(不包括)。end()方法返回的是匹配器的状态to。

Matcher region(int start,int end)

设置此匹配器的区域限制。重置匹配器,然后设置区域,使其从 start 参数指定的索引开始,到 end 参数指定的索引结束(不包括end索引处的字符)。

boolean lookingAt()

从目标字符串开始位置进行匹配。只有在有匹配且匹配的某一子串中包含目标字符串第一个字符的情况下才会返回true。

boolean matches()

只有完全匹配时才会返回true。

Matcher appendReplacement(StringBuffer sb, String replacement)

将当前匹配子串替换为指定字符串,并将从上次匹配结束后到本次匹配结束后之间的字符串添加到一个StringBuffer对象中,最后返回其字符串表示形式。

StringBuffer appendTail(StringBuffer sb)

将最后一次匹配工作后剩余的字符串添加到一个StringBuffer对象里。

String replaceAll(String replacement)

将匹配的子串用指定的字符串替换。

String replaceFirst(String replacement)

将匹配的第一个子串用指定的字符串替换。

Matcher usePattern(Pattern newPattern)

更改匹配器的匹配模式。

注意

  1. Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例.
  2. 一个Matcher实例是被用来对目标字符串进行基于既有模式(也就是一个给定的Pattern所编译的正则表达式)进行匹配查找的,所有往Matcher的输入都是通过CharSequence接口提供的,这样做的目的在于可以支持对从多元化的数据源所提供的数据进行匹配工作。

DEMO

@RunWith(SpringJUnit4ClassRunner.class)
@Slf4j
public class TestInfo {
    public static final String P_UNCAP = "【客户档案:(?<name>.*)】";
    public static final String DATE_STRING = "【客户档案:湖南省银华棉(麻产)业集团股份公司】";
    @Test
	public void testInfo() {
		try {
            Pattern pattern = Pattern.compile(P_UNCAP);
            Matcher matcher = pattern.matcher(DATE_STRING);
            boolean b = matcher.find();
            String clientName = matcher.group("name");
		    System.out.println(clientName);

		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值