java正则表达式

1、概述:

   java的正则表达式由java.util.Regex包实现,该包中只有2个类Pattern、Matcher及一个接口MatchResult(Matcher实现之)

2、通用形式:

Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();

   首先通过Pattern的compile方法将给定的正则表达式编译成Pattern对象,再调用matcher方法得到一个Matcher对象,该方法需接收一个被匹配的字符序列

3、Pattern:模式

   在该类的api中,详细地介绍了java正则表达式的构造摘要;也定义了几个类常量,有用的有CASE_INSENSITIVE(启用不区大小写的匹配)、

   MULTILINE(启用多行模式)、COMMENTS(模式中允许空白和注释),这几个变量用于compile(String regex,int flag)该方法中的flag

   3.1、static boolean matches(String regex, CharSequence input) : 编译给定正则表达式并尝试将给定输入与其匹配;
     如上面的例子,等同于Pattern.matches("a*b","aaaaab");

   3.2、String[] split(CharSequence input) 和 String[] split(CharSequence input, int limit) 围绕此模式的匹配拆分给定输入序列。

        如:
String input = "This!!unusual use!!of exclamation!!points";
System.out.println(Arrays.asList(Pattern.compile("!!").split(input)));

输出结果为:[This,unusual use,of exclamation,points]

带有limit参数的方法,limit参数指的是被拆分的数组大小,如
System.out.println(Arrays.asList(Pattern.compile("!!").split(input,3)));

则输出结果为: [This,unusual use,of exclamation!!points]


4、Matcher:匹配器

   4.1、find()、lookingAt()、matches()

    通过调用模式的 matcher 方法从模式创建匹配器。创建匹配器后,可以使用它执行三种不同的匹配操作,每个操作后都会返回一个操作结果、成功或失败:

    find:扫描输入序列以查找与该模式匹配的下一个子序列,

    如:
     Matcher m = Pattern.compile("\\w+").matcher("Evening is full of the linnet's wings");
    while(m.find()) System.out.println(m.group());

    则输出结果为:
Evening    
is   
full   
of
the
         linnet
wings

   lookingAt():尝试将输入序列从头开始与该模式匹配(即如果输入序列从一开始就是模式的一个匹配,则操作结果为成功),即如果输入序列的开头的部分序列匹配即可以

   matches():尝试将整个输入序列与该模式匹配,即只有整个输入序列都匹配模式才会返回成功

   4.2、reset(CharSequence input) 、usePattern(Pattern newPattern)

    reset 方法用于通过新的输入序列来重置匹配器,即更换新的输入序列,但模式不变

     usePattern 方法用于更改此 Matcher 用于查找匹配项的 Pattern,即更换新的模式,但输入序列不变


   4.3、替换:

    replaceAll(String replacement):根据给定的字符串替换所有匹配的字符序列 ;

    replaceFirst(String replacement) :根据给定的字符串替换第一个匹配的字符序列;

    appendReplacement(StringBuffer sb, String replacement) :实现非终端追加和替换步骤。THINKING 书里讲到这个方法很有用,暂时还未理解

你可能感兴趣的:(java,正则表达式)