本帖最后由 lxcnn 于 2009-11-02 23:34:00 编辑

解决方案 »

  1.   

    在捕获组这篇中:举例:替换掉html标签中的属性。<textarea id="result" rows="10" cols="100"></textarea> <script type="text/javascript"> var data = "<table id=\"test\"><tr class=\"light\"><td> test </td></tr></table>";var reg = /<([a-z]+)[^>]*>/ig;document.getElementById("result").value = data.replace(reg, "<$1>");</script>//输出<table><tr><td> test </td></tr></table>虽然注明:"注:以下应用举例仅考虑简单应用场景,对于<a href="javascript:document.write('<b>hello</b>')"/>这种复杂场景暂不考虑。"
    但是对于: <h1> ...<h6>这样的不复杂情况并不能处理..
    是不是可以改为:var reg = /<([a-z1-6]+)[^>]*>/ig;
      

  2.   

    各种正则表达式语法比较:
    http://hi.baidu.com/wuchangqian/blog/item/68e142de4fefa51a495403d6.html
      

  3.   

    固化分组这个东西不宜太过渲染,否则当转用其他的语言去实现的时候,会有很多莫名其妙的感觉。
    就像我在javascript中使用零宽断言的时候,一直不知道出了什么问题,后面才发现是javascript不支持。以前也研究过一段时间的正则表达式,不过没你的系统和理论化,学习了。
    http://blog.csdn.net/zhiqiangzhan/archive/2009/10/12/4659534.aspx
      

  4.   

    举例:需求:取得两个“””中的子串,其中不能再包含“””。正则表达式一:”.*”正则表达式二:”.*?”情况一:当贪婪模式匹配到更多不需要的内容时,可能存在比非贪婪模式更多的回溯。比如源字符串为“The word “Regex” means regular expression.”。情况二:贪婪模式无法满足需求。比如源字符串为“The phrase "regular expression" is called "Regex" for short.”。报告客客,这2个正则错误。
      

  5.   

    没机会研究正则了,仅对近来老客客的辛勤劳动的结晶致以崇高的敬意。千呼万唤始出来,LCL_data上来就拍砖,不过,老客客就好这一口
      

  6.   


    嗯,这些是比较重要的知识点,之前的博客已介绍
    非常感谢,这个确实是欠考虑了,改天在博客中更新
    grep和egrep版本太多,很难确定自己在用的是哪个版本
    sed、awk似乎用得不广泛
    javascript在不同的引擎下匹配行为是不同的,比如小数点“.”,在IE下可以匹配“\r”,而在其它浏览器如Firefox、Opera、Chrome下却不匹配如果能整理一下Java、.NET、JavaScript、Perl、PHP这些语言的正则语法比较就比较好了
    可能是这篇文章更偏重于匹配原理的讲解,而这些理论是建立在对NFA引擎匹配原理和回溯过程了解的基础上的
    不了解原理也可以解决几乎的所有正则应用问题,我以前就是这样的,但这样做最大的一个弱点就是,不知道自己写出的正则效率如何,涉及到效率问题就无言以对了,所以还是从匹配原理方面理解比较好4.2.2的位置我再考虑下,看放在哪里更好些对于匹配原理解释带来的复杂性,请参考上一回复
    呵呵,我现在的博客全是关于正则的
    有朋友抱怨我的博客更新太慢,这也是没办法的事,要先养家糊口不是
    后面考虑改变一下策略,争取把我回答的问题做个每日点评,希望这样能提高更新速度
    初学正则,确实不易过多关注语言间的细节化差异
    但是如果想在不同语言熟练运用正则,这些细节又是必须被关注的
    就你这一句话,我改了近半个小时
    我用Word编辑的,图也是用Word画的,输入法导致输入的引号全角没切换成半角,在Word中又看不出来,这出这问题了
      

  7.   

    好像跟javascript的正则表达式有点差异
      

  8.   

    匹配结果应该是个数组吧,下标1的为:<div>test1</div> 下标2的为:<div>test2</div>cc
    一直匹配到结束的,可能楼主说法上有点问题
      

  9.   

    <div>test1</div>bb<div>test2</div>cc对于这个我想匹配得到结果为<div>test2</div>cc 该用什么表达式?意思就是匹配后面为cc的div标签的内容,我尝试用<div>.*?</div>(?=cc),可是仍旧无效