Java 正則表達(dá)式匹配

2018-02-12 23:07 更新

Java正則表達(dá)式教程 - Java正則表達(dá)式匹配


Matcher 類對(duì)字符序列執(zhí)行匹配通過(guò)解釋在 Pattern 對(duì)象中定義的編譯模式。

Pattern 類的 matcher()方法創(chuàng)建一個(gè)實(shí)例的 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);
  }
}

匹配器的以下方法執(zhí)行匹配。

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

find()方法

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

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

第一次調(diào)用 find()在輸入的開始處開始搜索。下一個(gè)調(diào)用將在上一次匹配后開始搜索。

我們可以使用while循環(huán)與 find()方法來(lái)查找所有的匹配。

find()方法是一個(gè)重載的方法。find()方法的另一個(gè)版本接受一個(gè)整數(shù)參數(shù),這是開始查找匹配的偏移量。

start()方法

find()方法返回上一次匹配的開始索引。 它在成功的find()方法調(diào)用之后使用。


end()方法

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

匹配后, 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);
    }
  }
}

上面的代碼生成以下結(jié)果。

group()方法

group()方法通過(guò)前一個(gè)成功的find()方法調(diào)用返回找到的字符串。

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

上面的代碼生成以下結(jié)果。

例子

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

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)