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