正则表达式的Java语法
正则表达式的模式串直接匹配方式
下面的这个例子用正则表达式判断单词中是否含有i字母:
importjava.util.regex.*; publicclassTestRegexDirect { publicstaticvoidmain(String[] args){ Stringword="university"; StringpatternString="\\w*i\\w*"; booleanflag=Pattern.matches(patternString, word); System.out.println(flag); } }
- 这种匹配方式适用于单次匹配,其效率较低。
- 原因是:静态方法Pattern.matches( , )每次都要对其中的参数patternString做一次处理,方可匹配。
正则表达式的模式串预编译后匹配方式
下面的这个例同样用正则表达式判断单词中是否含有i字母:
importjava.util.regex.*; publicclassTestRegexCompile { publicstaticvoidmain(String[] args){ String[] words= {"your", "Eglish", "university"}; StringpatternString="\\w*i\\w*"; Patternpattern=Pattern.compile(patternString); for (Stringword : words){ Matchermatcher=pattern.matcher(word); booleanflag=matcher.matches(); System.out.println(flag); } } }
- 这个匹配的效率就高得多。
- 这是因为方法Pattern.compile()方法对patternString做了预编译,这使得后期的匹配效率更高。
- 在使用模式串多次匹配的情况下,要使用这个方法。
正则表达式的预编译及匹配方式的语法
下面是上述例子中三个重要语法:
• Pattern pattern = Pattern.compile(patternString);对模式串patternString做了预编译,结果存放在pattern中。
• Matcher matcher = pattern.matcher(word);pattern 和 word 通过matcher()方法,形成一个matcher匹配器
• boolean flag = matcher.matches();Matcher对象的无参方法 matches() 在预编译结果的基础上实现了快速的匹配