当前位置 博文首页 > 静Yu的博客:正则表达式的 Java语法

    静Yu的博客:正则表达式的 Java语法

    作者:[db:作者] 时间:2021-09-05 16:05

    正则表达式的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() 在预编译结果
    的基础上实现了快速的匹配

    cs
    下一篇:没有了