Java中带有示例的模式compile()方法

java.regex包的模式类是正则表达式的编译表示。

此类的compile()方法接受表示正则表达式的字符串值,并返回Pattern对象。

示例

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CompileExample {
   public static void main( String args[] ) {
      //读取字符串值
      Scanner sc = new Scanner(System.in);
      System.out.println("Enter input string");
      String input = sc.nextLine();
      //查找数字的正则表达式
      String regex = "(\\d)";
      //编译正则表达式
      Pattern pattern = Pattern.compile(regex);
      //打印正则表达式
      System.out.println("Compiled regular expression: "+pattern.toString());
      //检索匹配器对象
      Matcher matcher = pattern.matcher(input);
      //验证是否发生匹配
      if(matcher.find()) {
         System.out.println("Given String contains digits");
      } else {
         System.out.println("Given String does not contain digits");
      }
   }
}

输出结果

Enter input string
hello my id is 1120KKA
Compiled regular expression: (\d)
Given String contains digits

此方法的另一个变体接受表示标志的整数值,其中每个标志指定一个可选条件,例如CASE_INSENSITIVE在编译正则表达式时忽略大小写。

示例

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CompileExample {
   public static void main( String args[] ) {
      //编译正则表达式
      Pattern pattern = Pattern.compile("[t]", Pattern.CASE_INSENSITIVE);
      //检索匹配器对象
      Matcher matcher = pattern.matcher("Nhooo");
      int count = 0;
      while(matcher.find()) {
         count++;
      }
      System.out.println("Number of matches: "+count);
   }
}

输出结果

Enter input string
Nhooo
Number of matches: 3