zoukankan      html  css  js  c++  java
  • 正则表达式中的回溯

      正则表达式的引擎主要由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[^>]*>(.*?|
    *|
    *)*</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("");
            }
        }
  • 相关阅读:
    网络协议
    窗口TOPMOST属性设置失败
    自绘之----对话框
    图书推荐
    MFC自绘之WM_ERASEBKGND
    批处理获取当前路径
    checkBox 自绘
    第四章:基于TCP套接字编程(三)
    第四章:基于TCP套接字编程(二)
    第四章:基于TCP套接字编程(一)
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/4823203.html
Copyright © 2011-2022 走看看