码迷,mamicode.com
首页 > 其他好文 > 详细

正则表达式中的回溯

时间:2015-09-20 13:06:10      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

  正则表达式的引擎主要由2种:NFADFA。

  java的正则基于的是NFA,表达式主导,匹配成功即成功,正则nfa|nfa not匹配字符串nfa not的结果是nfa

  DFA是文本主导,会记录所有的匹配。

  

  使用正则表达式时需要注意回溯,否则可能会导致栈溢出。下面是一个例子程序:

String str2 = "<div class=\"ITinfo\">" +
        "<ul class=\"ITinfo_ul\">" + 
            "<li style=\" font-size:14px;\"><a href=\"../Board/Detail.asp?NewsID=001-0329\"><B><font color=\"red\">OA移动版本APP下载</font></B></a></li>" +
        "<li><a href=../Board/Detail.asp?NewsID=001-0584><font color=#000000>OA系统菜单权限模块调整通知</font></a></li><li><a href=../Board/Detail.asp?NewsID=011-0048><font color=#000000>IE10/11时间显示、附件上传解决..</font></a></li><li><a href=../Board/Detail.asp?NewsID=011-0051><font color=#000000>SSL&nbsp;VPN版本升级通知</font></a></li><li><a href=../Board/Detail.asp?NewsID=011-0050><font color=#000000>OA手机版切换完成</font></a></li><li><a href=../Board/Detail.asp?NewsID=001-0557><font color=#000000>关于使用域账号登录OA系统及密..</font></a></li><li><a href=../Board/Detail.asp?NewsID=001-0555><font color=#000000>K3/MES系统维护通知</font></a></li>"
        + "</ul>"
        + "<div class=\"ITinfo2\">"
        +    "<form action=\"../tel/Tel_List.asp\" type=\"post\" name=\"query\" id=\"query\" onsubmit=\"return CheckForm(this)\">"
        +        "<center><input name=\"content\" id=\"content\" type=\"text\"><br />"
        +       "<input type=\"image\" src=\"js/img/input2.jpg\" style=\"margin-top:2px;margin-top:4px !important;\" /></center>"
        +    "</form>"
        + "</div>"
        +"</div>";
        
        //<div[^>]*>(.*?|\n*|\r*)*</div> ==>Exception in thread "main" java.lang.StackOverflowError
        Pattern p2 = Pattern.compile("<div[^>]*>([\\s\\S]*?)</div>");
        Matcher m2 = p2.matcher(str2);

        while(m2.find()){
            for(int i=0;i<= m2.groupCount();i++){
                System.out.print("[" + m2.group(i) + "]");
            }
            System.out.println("");
        }
    }

 

正则表达式中的回溯

标签:

原文地址:http://www.cnblogs.com/lnlvinso/p/4823203.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!