• .*?


    惰性匹配.*?

    1、. 匹配任意除换行符“ ”外的字符;
    2、*表示匹配前一个字符0次或无限次;
    3、?表示前边字符的0次或1次重复
    4、+或*后跟?表示非贪婪匹配,即尽可能少的匹配,如*?重复任意次,但尽可能少重复;
    5、 .*? 表示匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复。
    如:a.*?b匹配最短的,以a开始,以b结束的字符串。如果把它应用于aabab的话,它会匹配aab和ab。

    ()

    (select(.*?)from)
    ()标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。
    String rule = "(select(.*?)from)";
    Pattern compile = Pattern.compile(rule);
    Matcher matcher = compile.matcher(sql);
    while(matcher.find()){
        String sqlSelect = matcher.group(0);    
    }
    

     这段代码查找多次出现包含 select from的语句

    (,)?(\s)*".*?"(\s)*(,)?
    String fieldRule = "(,)?(\s)*".*?"(\s)*(,)?";
    Pattern compileField = Pattern.compile(fieldRule);
    Matcher matcherField = compileField.matcher(sqlSelect);
    while(matcherField.find()){
        String sqlField = matcherField.group(0);
    }
    

      

    这段代码查找包含双引号或,空白符之后有双引号的语句

     
  • 相关阅读:
    对比使用Charles和Fiddler两个工具及利用Charles抓取https数据(App)
    Charles-安装和配置
    python算法-队列
    python算法-快速排序
    【Codeforces】383.DIV2
    static关键字
    UNIX环境高级编程--5
    【LeetCode】467. Unique Substrings in Wraparound String
    typedef关键字
    strcpy 和 memcpy自实现
  • 原文地址:https://www.cnblogs.com/beilong/p/14549039.html
Copyright © 2020-2023  润新知