这段正则表达式是什么意思 "src\s*=\s*\"?([^"<>]+)\"?"

mjk 2003-05-13 07:48:41
这段正则表达式是什么意思 "src\s*=\s*\"?([^"<>]+)\"?"
...全文
142 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sazaneyes 2003-05-13
  • 打赏
  • 举报
回复
这应该是从html中提取出图片位置用的(当然,FRAME等的提取也用得上,不过这里就不说了),
举例<img src="pic.tif" align=middle>
src是前缀,\s*=\s*是等号两边有多少空格都可以,
\"?______\"?这一段是指的URL两边可以加也可以不加一个引号,标准的应该是有引号的,不过IE好像对不加引号的情况也可以处理,所以就有不少网页是不加引号的。
([^"<>]+)用圆括号括起来是子模式,要捕获的就是圆括号内的内容。
[^"<>]+指的是“不为引号大于小于号的任意字符至少出现一次”,不为小于号是避免匹配范围出当前TAG,不为大于号大概是为了排除当前TAG不完整导致匹配到外面的情况,感觉不太必要,不为引号是避免匹配范围超出当前TAG的SRC属性值的范围,因为默认是贪婪匹配,如果不排除引号的话,例如“src="pic.tif" align=buttom”就会匹配出“pic.tif" align=buttom”的结果。
但这里还是有问题的,如果URL两边根本就没有引号,比如“src=pic.tif align=buttom”,这时候用上述的表达式就会匹配出“pic.tif align=buttom”,这还是错的。
所以应该改成“src\s*=\s*\"?([^"<>\s]+)\"?”。

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧