当前位置 博文首页 > 静Yu的博客:正则表达式的 Java语法
正则表达式的Java语法
? 正则表达式的模式串直接匹配方式
? 正则表达式的模式串预编译后匹配方式
? 正则表达式的预编译及匹配方式的语法
下面的这个例子用正则表达式判断单词中是否含有i字母:
import java.util.regex.*;
public class TestRegexDirect {
public static void main(String[] args){
String word = "university";
String patternString = "\\w*i\\w*";
boolean flag = Pattern.matches(patternString, word);
System.out.println(flag);
}
}
? 这种匹配方式适用于单次匹配,其效率较低。
? 原因是:静态方法Pattern.matches( , )每次都要对
其中的参数patternString做一次处理,方可匹配。
下面的这个例同样用正则表达式判断单词中是否含有i字母:
import java.util.regex.*;
public class TestRegexCompile {
public static void main(String[] args){
String[] words = {"your", "Eglish", "university"};
String patternString = "\\w*i\\w*";
Pattern pattern = Pattern.compile(patternString);
for (String word : words){
Matcher matcher = pattern.matcher(word);
boolean flag = 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() 在预编译结果
的基础上实现了快速的匹配