搜索
aardio官方社区 门户 查看主题

模块字串中所有图片链接的问题

发布者: feihu3033 | 发布时间: 2018-5-24 19:18| 查看数: 339| 评论数: 6|帖子模式

匹配字串 所有图片链接,为什么只能匹配第1个,求解答,谢谢。代码如下:
  1. var str="asdasds<img  3443   Src='http://xxx.com/1.jpg11'   >asdasdasda看了sds<img b src='http://xxx.com/1.jpg22'   >asdasd";
  2.        
  3.         var pic1=string.gmatch(str,"\<[Ii][Mm][Gg]\s.*?[Ss][Rr][Cc]\s*=\p([\w-\:\./]*)\s*\p.*\>");
  4.         io.open();
  5.        
  6.         for k,v in pic1{
  7.                 io.print(k,v)
  8.                
  9.                 }
复制代码

最新评论

nlysh007 发表于 2018-5-24 22:45:13
原因如图。。。
q.jpg
Jacen.He 发表于 2018-5-25 03:30:40
模式匹配可以这样写:
import console;

var str = `
asdasds<img  3443   Src='http://xxx.com/1.jpg11'   >asdasdasda看了sds
<img b src="http://xxx.com/1.jpg22"   >asdasd
<img b src=http://xxx.com/1.jpg333   >asdasd
`
;

for img in string.gmatch( str,"<@@<img@>[^>]+") {
   
var src = string.match(img,`<@@src@>\s*=\s*(<'[^']+'>|<"[^"]+">|<\S+>)`);
    console.log(src)
}

console.pause(
true);

也可以用新版的 string.html 解析,

import string.html;
import console;

var html = `
asdasds<img  3443   Src='http://xxx.com/1.jpg11'   >asdasdasda看了sds
<img b src="http://xxx.com/1.jpg22"   >asdasd
<img b SRC=http://xxx.com/1.jpg333   >asdasd
`
;

//解析HTML
var htmlDoc = string.html( html)

//获取所有img节点
var imgs = htmlDoc.queryEles( tagName = "img");

//遍历img
for i,img in table.eachIndex(imgs){
    console.log( img.getAttribute(
"src") )
}

console.pause()
我刚加的 getAttribute 函数,
可以支持忽略大小写查找src,Src,SRC....这种属性,不过一般应当没人会把HTML写成这样。

feihu3033 发表于 2018-5-25 09:56:13
谢谢作者的回复,又学习到一种新方法。我改进了我原来的代码,也实现了。改写为
  1. var pic1=string.gmatch(html,"\<[Ii][Mm][Gg]\s.*?[Ss][Rr][Cc]\s*=\p?([\w-\:\.\?\=/]*)\s*?\p?\s");
复制代码


这样也能匹配到。谢谢
feihu3033 发表于 2018-5-25 10:06:27

这是添加的干扰,是为了让代码在各种恶劣环境下正常工作,测试用的。
nlysh007 发表于 2018-5-25 13:42:28
feihu3033 发表于 2018-5-25 10:06
这是添加的干扰,是为了让代码在各种恶劣环境下正常工作,测试用的。

我要说的是匹配的范围,,你写的规则,你看下范围,当然只会返回一个
feihu3033 发表于 2018-5-26 16:47:28
nlysh007 发表于 2018-5-25 13:42
我要说的是匹配的范围,,你写的规则,你看下范围,当然只会返回一个

我测试也是,直接匹配到最后了,改了之后,就行了。谢谢了。

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-6-25 18:15 , Processed in 0.062500 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表