【分享】正则基础之——贪婪与非贪婪模式 本帖最后由 lxcnn 于 2009-11-02 23:34:00 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在捕获组这篇中:举例:替换掉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; 各种正则表达式语法比较:http://hi.baidu.com/wuchangqian/blog/item/68e142de4fefa51a495403d6.html 固化分组这个东西不宜太过渲染,否则当转用其他的语言去实现的时候,会有很多莫名其妙的感觉。就像我在javascript中使用零宽断言的时候,一直不知道出了什么问题,后面才发现是javascript不支持。以前也研究过一段时间的正则表达式,不过没你的系统和理论化,学习了。http://blog.csdn.net/zhiqiangzhan/archive/2009/10/12/4659534.aspx 举例:需求:取得两个“””中的子串,其中不能再包含“””。正则表达式一:”.*”正则表达式二:”.*?”情况一:当贪婪模式匹配到更多不需要的内容时,可能存在比非贪婪模式更多的回溯。比如源字符串为“The word “Regex” means regular expression.”。情况二:贪婪模式无法满足需求。比如源字符串为“The phrase "regular expression" is called "Regex" for short.”。报告客客,这2个正则错误。 没机会研究正则了,仅对近来老客客的辛勤劳动的结晶致以崇高的敬意。千呼万唤始出来,LCL_data上来就拍砖,不过,老客客就好这一口 嗯,这些是比较重要的知识点,之前的博客已介绍非常感谢,这个确实是欠考虑了,改天在博客中更新grep和egrep版本太多,很难确定自己在用的是哪个版本sed、awk似乎用得不广泛javascript在不同的引擎下匹配行为是不同的,比如小数点“.”,在IE下可以匹配“\r”,而在其它浏览器如Firefox、Opera、Chrome下却不匹配如果能整理一下Java、.NET、JavaScript、Perl、PHP这些语言的正则语法比较就比较好了可能是这篇文章更偏重于匹配原理的讲解,而这些理论是建立在对NFA引擎匹配原理和回溯过程了解的基础上的不了解原理也可以解决几乎的所有正则应用问题,我以前就是这样的,但这样做最大的一个弱点就是,不知道自己写出的正则效率如何,涉及到效率问题就无言以对了,所以还是从匹配原理方面理解比较好4.2.2的位置我再考虑下,看放在哪里更好些对于匹配原理解释带来的复杂性,请参考上一回复呵呵,我现在的博客全是关于正则的有朋友抱怨我的博客更新太慢,这也是没办法的事,要先养家糊口不是后面考虑改变一下策略,争取把我回答的问题做个每日点评,希望这样能提高更新速度初学正则,确实不易过多关注语言间的细节化差异但是如果想在不同语言熟练运用正则,这些细节又是必须被关注的就你这一句话,我改了近半个小时我用Word编辑的,图也是用Word画的,输入法导致输入的引号全角没切换成半角,在Word中又看不出来,这出这问题了 好像跟javascript的正则表达式有点差异 匹配结果应该是个数组吧,下标1的为:<div>test1</div> 下标2的为:<div>test2</div>cc一直匹配到结束的,可能楼主说法上有点问题 <div>test1</div>bb<div>test2</div>cc对于这个我想匹配得到结果为<div>test2</div>cc 该用什么表达式?意思就是匹配后面为cc的div标签的内容,我尝试用<div>.*?</div>(?=cc),可是仍旧无效 C# 获取图片上的文字 C#中DataReader操作问题 datagridview数据样式 怎么知道C#哪些函数和过程是没用的, 关于listBox的郁闷问题 急! 在线等!! 密码放在什么地方比较安全? 如何判断一个字符串是否在数组中存在? 麻烦大家帮忙看看为什么会出错! 哪个工具可以做教学软件(课件)? 求助关于调用powerpoint winform CS系统与数据库交互问题
但是对于: <h1> ...<h6>这样的不复杂情况并不能处理..
是不是可以改为:var reg = /<([a-z1-6]+)[^>]*>/ig;
http://hi.baidu.com/wuchangqian/blog/item/68e142de4fefa51a495403d6.html
就像我在javascript中使用零宽断言的时候,一直不知道出了什么问题,后面才发现是javascript不支持。以前也研究过一段时间的正则表达式,不过没你的系统和理论化,学习了。
http://blog.csdn.net/zhiqiangzhan/archive/2009/10/12/4659534.aspx
嗯,这些是比较重要的知识点,之前的博客已介绍
非常感谢,这个确实是欠考虑了,改天在博客中更新
grep和egrep版本太多,很难确定自己在用的是哪个版本
sed、awk似乎用得不广泛
javascript在不同的引擎下匹配行为是不同的,比如小数点“.”,在IE下可以匹配“\r”,而在其它浏览器如Firefox、Opera、Chrome下却不匹配如果能整理一下Java、.NET、JavaScript、Perl、PHP这些语言的正则语法比较就比较好了
可能是这篇文章更偏重于匹配原理的讲解,而这些理论是建立在对NFA引擎匹配原理和回溯过程了解的基础上的
不了解原理也可以解决几乎的所有正则应用问题,我以前就是这样的,但这样做最大的一个弱点就是,不知道自己写出的正则效率如何,涉及到效率问题就无言以对了,所以还是从匹配原理方面理解比较好4.2.2的位置我再考虑下,看放在哪里更好些对于匹配原理解释带来的复杂性,请参考上一回复
呵呵,我现在的博客全是关于正则的
有朋友抱怨我的博客更新太慢,这也是没办法的事,要先养家糊口不是
后面考虑改变一下策略,争取把我回答的问题做个每日点评,希望这样能提高更新速度
初学正则,确实不易过多关注语言间的细节化差异
但是如果想在不同语言熟练运用正则,这些细节又是必须被关注的
就你这一句话,我改了近半个小时
我用Word编辑的,图也是用Word画的,输入法导致输入的引号全角没切换成半角,在Word中又看不出来,这出这问题了
一直匹配到结束的,可能楼主说法上有点问题