Java正则表达式-匹配器

1 Macher类

Matcher类的作用是,通过解释Pattern对象中定义的已编译模式对字符序列执行匹配。

Pattern类的matcher()方法可以创建该类的Matcher实例。

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

//www.yiidian.com 一点教程网
public class Main {
  public static void main(String[] args) {
    String regex   = "[a-z]@.";
    Pattern p  = Pattern.compile(regex);
    String str = "abc@yahoo.com,123@cnn.com,abc@google.com";
    Matcher  m   = p.matcher(str);
  }
}

下面是Macher类的方法:

  • find() 方法
  • start() 方法
  • end() 方法
  • group() 方法

2 find()方法

find()方法:在输入中找到Pattern的匹配项。

如果查找成功,则返回true。否则,它返回false。

第一次调用find()在输入的开头开始搜索。下一个匹配将在上一次匹配之后开始搜索。

我们可以使用带有find()方法的while循环来查找所有匹配项。

find()方法存在重载方法。find()的重载方法使用整数作为参数,它是开始查找匹配项的偏移量。

3 start()方法

start() 方法返回上一个匹配项的起始索引。成功调用find() 方法后使用它。
 

4 end()方法

end()方法的作用:用于返回匹配字符串中最后一个字符的索引。

匹配后,str.substring(m.start(), m.end())为您提供匹配的字符串。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
//www.yiidian.com 一点教程网
public class Main {
  public static void main(String[] args) {
    String regex   = "[a-z]@.";
    Pattern p  = Pattern.compile(regex);
    String str = "abc@yahoo.com,123@cnn.com,abc@google.com";
    Matcher  m   = p.matcher(str);
    
    if (m.find())  {
      String  foundStr = str.substring(m.start(),  m.end());
      System.out.println("Found string  is:" + foundStr);
    }
  }
}

以上代码输出结果为:

Found string is:c@y

5 group()方法

group()方法的作用:通过上一次成功的find() 方法调用返回找到的字符串。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
//www.yiidian.com 一点教程网
public class Main {
  public static void main(String[] args) {
    String regex = "[a-z]@.";
    Pattern p = Pattern.compile(regex);
    String str = "abc@yahoo.com,123@cnn.com,abc@google.com";
    Matcher m = p.matcher(str);

    if (m.find()) {
      String foundStr = m.group();
      System.out.println("Found text is:" + foundStr);
    }
  }
}

以上代码执行结果为:

Found text is:c@y

另一个示例

import java.util.regex.Pattern;
import java.util.regex.Matcher;
//www.yiidian.com 一点教程网
public class Main {
  public static void main(String[] args) {
    String regex = "[abc]@.";
    String source = "abc@example.com";
    findPattern(regex, source);
  }
  public static void findPattern(String regex, String source) {
    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(source);

    System.out.println("Regex:" + regex);
    System.out.println("Text:" + source);
    while (m.find()) {
      System.out.println("Matched  Text:" + m.group() + ", Start:" + m.start()
          + ", " + "End:" + m.end());
    }
  }
}

以上代码执行结果为:

Regex:[abc]@.
    Text:abc@example.com
    Matched Text:c@e,Start:2,End:5

 

一点教程,一个分享编程知识的公众号。跟着站长一起学习和进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「一点教程」,你已然超越了90%的程序员!

一点教程二维码