关于匹配js标签的正则表达式

wy65 发布于 2014/06/18 15:47
阅读 410
收藏 0

两个正则表达式:

<script[^>]*>[^(</script)]*</script>和

<script[^>]*?>.*?</script>,他们区别在哪里?

用来匹配网页源码中js标签的表达式,一个是网上找的,一个是自己写的,

加载中
0
freesnow
freesnow

第一个相当业余,因为[^(</script)这种写法是达不到他的意图的,倒是可以这么写<script[^>]*>[^<]*</script>,不过这样的话script标签中不能有<

第二个,<script[^>]*?>里的问号没必要,不如没有问号。其他地方没问题。


仔细看了一下,你是想匹配script标签,但是标签中可能有<,是吧?

那第二个很正确

wy65
wy65
回复 @freesnow : 谢谢你的讲解
freesnow
freesnow
回复 @wy65 : 这是环视,百度一下“正则 环视”,第一个博客讲的很好。你也可以就用.*?,那个正则应该没问题。
wy65
wy65
回复 @freesnow : 你写的表达式中间看不懂,“?!”是非的意思?
freesnow
freesnow
也可以用<script[^>]*>((?!</script>)[\s\S])*</script> 这个可以实现第一个正则的意图
freesnow
freesnow
回复 @wy65 : 问号表示非贪婪匹配(也叫惰性匹配)。表示在匹配成功的前提下,尽量少的匹配字符
下一页
返回顶部
顶部