第二百零三节 Java正则表达式教程 - Java正则表达式匹配

Java正则表达式教程 - Java正则表达式匹配

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

Pattern 类的 matcher()方法创建一个实例的 Matcher 类。

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

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);
  }
}

匹配器的以下方法执行匹配。

  • find() method
  • start() method
  • end() method
  • group() method

find()方法

find()方法找到输入中的模式的匹配。

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

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

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

find()方法是一个重载的方法。find()方法的另一个版本接受一个整数参数,这是开始查找匹配的偏移量。

start()方法

find()方法返回上一次匹配的开始索引。 它在成功的find()方法调用之后使用。

end()方法

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

匹配后, str.substring(m.start(),m.end())给出匹配的字符串。

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

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);
    }
  }
}

上面的代码生成以下结果。

group()方法

group()方法通过前一个成功的find()方法调用返回找到的字符串。

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

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);
    }
  }
}

上面的代码生成以下结果。

例子

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

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());
    }
  }
}

上面的代码生成以下结果。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值