zoukankan      html  css  js  c++  java
  • JDK中个别类的介绍Pattern、Matcher

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

    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():此匹配器区域的结束索引(不包括)。

  • 相关阅读:
    Codeforces Round #535 (Div. 3)
    2019 CCPC-Wannafly Winter Camp Day4(Div2, onsite)
    Codeforces Round #534 (Div. 2)
    2019 CCPC-Wannafly Winter Camp Day3(Div2, onsite)
    2019 CCPC-Wannafly Winter Camp Day2(Div2, onsite)
    2019 CCPC-Wannafly Winter Camp Day1 (Div2, onsite)
    codeforces1097D Makoto and a Blackboard 数学+期望dp
    【NOIP2016】换教室
    ICPC2019徐州站游记
    【Codeforces】Orz Panda Cup
  • 原文地址:https://www.cnblogs.com/whuqin/p/4982064.html
Copyright © 2011-2022 走看看