Java正则表达式(续)

Matcher 类的方法

1、索引方法:提供了有用的索引值,精确标明输入字符串中在哪能找到匹配。

1)、public int start()返回以前匹配的初始索引
2)、public int start(int group)返回在以前的匹配操作期间,由给定组所不活的子序列的初始索引
3)、public int end()返回最后匹配字符之后的偏移量
4)、public int end(int group)返回在以前的匹配操作期间,由给定组所捕获子序列的最后字符之后的偏移量
例:

Pattern pattern = Pattern.compile("Java");
String test = "123Java456";

Matcher matcher = pattern.matcher(test);
matcher.find();
System.out.println(matcher.start());//返回3
System.out.println(matcher.end());//返回7
System.out.println(matcher.group());//返回Java

2、研究方法:用来检查输入字符串并返回一个布尔值,表示是否找到该模式。

1)、public boolean lookingAt()尝试将从区域开头开始的输入序列与该模式匹配
2)、public boolean find()尝试查询与该模式匹配的输入序列的下一个子序列
3)、public boolean find(int start)重置此匹配器,然后尝试查找匹配该模式,从指定索引开始的输入序列的下一个子序列
4)、public boolean matches()尝试将整个区域与模式匹配
例:

public static void test2(){
    Pattern pattern = Pattern.compile("Java");
    String test1 = "Java";
    String test2 = "Java1234";
    String test3 = "1234Java";
    /*
     * matches()是全部匹配,是将整个输入串与模式匹配,
     *  如果要验证一个输入的数据是否为数字类型或其他类型,一般要用matches()
     */
    Matcher matcher = pattern.matcher(test1);
    System.out.println(matcher.matches());//返回true

    matcher = pattern.matcher(test2);
    System.out.println(matcher.matches());//返回false

    /*
     *lookingAt 方法不需要整句都匹配,但是需要从第一个字符开始匹配
     */
    matcher = pattern.matcher(test2);
    System.out.println(matcher.lookingAt());//返回true

    matcher = pattern.matcher(test3);
    System.out.println(matcher.lookingAt());//返回false

    /*
     * find()方法是部分匹配,是查找输入串中与模式匹配的子串,
     * 如果该匹配的串有组还可以使用group()函数
     */
    matcher = pattern.matcher(test1);
    System.out.println(matcher.find());//返回true

    matcher = pattern.matcher(test2);
    System.out.println(matcher.find());//返回true

    matcher = pattern.matcher(test3);
    System.out.println(matcher.find(2));//返回true

    matcher = pattern.matcher(test3);
    System.out.println(matcher.find(5));//返回false
}

3、替换方法:替换输入字符串李文本的方法

1)、public Matcher appendReplacement(StringBuffer sb, String replacement)实现非终端添加和替换步骤
2)、public StringBuffer appendTail(StringBuffer sb)实现终端添加和替换步骤
3)、public String replaceAll(String replacement)替换模式与给定替换字符串相匹配的输入序列的每子序列
4)、public String replaceFirst(String replacement)替换模式与给定替换字符串相匹配的输入序列的第一个子序列
5)、public static String quoteReplacement(String s)返回指定字符串的字面替换字符串。这个方法返回一个字符串,就像传递给Matcher类的appendReplacement方法一个字面字符串一样工作。
例:

private static String REGEX = "dog";
private static String INPUT = "The dog says meow. " +
                               "All dogs say meow.";
private static String REPLACE = "cat";   
public static void main(String[] args) {
    Pattern p = Pattern.compile(REGEX);
    /*
     * replaceFirst 和 replaceAll 方法用来替换匹配正则表达式的文本。
     * 不同的是,replaceFirst 替换首次匹配,replaceAll 替换所有匹配
     */
     Matcher m = p.matcher(INPUT); 
     INPUT = m.replaceAll(REPLACE);
     System.out.println(INPUT);
 }

结果:The cat says meow. All cats say meow.

例:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches
{
   private static String REGEX = "a*b";
   private static String INPUT = "aabfooaabfooabfoob";
   private static String REPLACE = "-";
   public static void main(String[] args) {
      Pattern p = Pattern.compile(REGEX);
      // 获取 matcher 对象
      Matcher m = p.matcher(INPUT);
      StringBuffer sb = new StringBuffer();
      while(m.find()){
         m.appendReplacement(sb,REPLACE);
      }
      m.appendTail(sb);
      System.out.println(sb.toString());
   }
}

结果:-foo-foo-foo-

4、PatternSyntaxException 类的方法:是一个非强制异常类,它指示一个正则表达式模式中的语法错误。

1)、public String getDescription()获取错误的描述
2)、public int getIndex()获取错误的索引
3)、public String getPattern()获取错误的正则表达式模式
4)、public String getMessage()返回多行字符串,包含语法错误及其索引的描述、错误的正则表达式模式和模式中错误索引的可视化指示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值