Java Pattern正则匹配,并获取匹配内容

java.util.regex 包主要包括以下三个类:

Pattern 类:

  • pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正则表达式作为它的第一个参数。

Matcher 类:

  • Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样,Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。

Pattern正则匹配,并获取匹配内容

public static void main(String[] args) {
  String str = "bjp13766805130asf1111";
  Pattern pattern = Pattern.compile("[0-9]*\\.?[0-9]+");
  Matcher matcher = pattern.matcher(str);
  while (matcher.find()) {
    //3->14
    //17->21
    System.out.println(matcher.start() + "->" + matcher.end());
    System.out.println("");
    System.out.println(str.substring(matcher.start(), matcher.end()));
    //13766805130
    //1111
  }
}

find():是否存在与该模式匹配的下一个子序列。简单来说就是在字符某部分匹配上模式就会返回true,同时匹配位置会记录到当前位置,再次调用时从该处匹配下一个。

Matcher中的start()和end()。start(),点进方法可以看到返回的是上一个匹配项的起始索引,如果没有匹配项将抛出IllegalStateException异常。同理,end()则为结束的索引。

你可能感兴趣的:(java,开发语言)