
1 Weakdancer 2011-08-28 13:54:40 +08:00 python: import re SO_=""" s = "url(a.jpg);color:red;url(b.gif)" """ print re.findall("url\(([^()]*)\)",SO_) |
2 orzzzzz OP @Weakdancer 谢谢...不过只要js版本的......传说中的非贪婪匹配总是不对.... :(.... |
3 badegg 2011-08-28 14:17:17 +08:00 可以添加一个元素然后利用浏览器的style对象去取不 |
4 Weakdancer 2011-08-28 14:17:26 +08:00 是的,我用js怎么都匹配不出来,很奇怪。 SO_= "url(a.jpg);color:red;url(b.gif)"; re_=/url\(([^\(\)]+)\)/; re_.exec(SO_); 竟然得到 ["url(a.jpg)","a.jpg"] 奇怪 |
5 Hyperion 2011-08-28 14:22:33 +08:00 = =! exec()一次返回一个... 多调用几次就出来了... 找不到了就会返回null... |
6 Hyperion 2011-08-28 14:25:24 +08:00 var s = "url(a.jpg);color:red;url(b.gif)"; var p = /url\s*\((.+?)\)\s*;?/gi; var test; while(test = p.exec(s)) { alert(test); } |
7 orzzzzz OP @Hyperion --- 汗了. \s*\S+\s* --> .+......试过(\s*\S+\s*)+?,觉着应该是等价的呀. 可能还会有url("a.jpg"),url('b.gif')这样的形式的... 所以要求的子表达式中还不能是任意字符. 嗯,或者得到之后再做处理算了... 多谢. |
8 Hyperion 2011-08-28 15:21:45 +08:00 @orzzzzz 那也应该是 url\s*\((\s*\S+?\s*)\) 吧... 分组内部就已经匹配越界了. "url(a.jpg);color:red;url(b.gif)" => a.jpg);color:red;url(b.gif 这一段都符合 (\s*\S+\s*)... |
9 orzzzzz OP |
10 Hyperion 2011-08-28 15:33:42 +08:00 @orzzzzz 其实啊, 是你()里写的就有了问题, 已经是非贪婪了... 在()外面加+?, 修饰的是这整个子表达式... |
12 frittle 2011-08-28 17:50:46 +08:00 \S是问题所在,把p改成就OK了,都是同个站内的资源的话可以去掉\: var p = /url\s*\((\s*[A-Za-z0-9\-\_\.\/\:]+\s*)\)\s*;?/gi; |