2021-04-18 11:21  阅读(69)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-regex-character-classes.html

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

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

202104181123_1.png

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

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

202104181122_2.png

例子

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

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

202104181121_3.png

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 正则表达式匹配
上一篇
Java 正则表达式模式
下一篇
Java 正则表达式量词