aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 12715|回复: 6

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

[复制链接]

2

主题

15

回帖

114

积分

一级会员

积分
114
发表于 2018-5-24 19:18:19 | 显示全部楼层 |阅读模式
匹配字串 所有图片链接,为什么只能匹配第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.         import console;
  5.        
  6.         for k,v in pic1{
  7.                 console.log(k,v)
  8.                
  9.                 }
复制代码

3

主题

35

回帖

554

积分

培训班

积分
554
发表于 2018-5-24 22:45:13 | 显示全部楼层
原因如图。。。
q.jpg

166

主题

2154

回帖

1万

积分

管理员

积分
13056
发表于 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写成这样。

2

主题

15

回帖

114

积分

一级会员

积分
114
 楼主| 发表于 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");
复制代码


这样也能匹配到。谢谢

2

主题

15

回帖

114

积分

一级会员

积分
114
 楼主| 发表于 2018-5-25 10:06:27 | 显示全部楼层

这是添加的干扰,是为了让代码在各种恶劣环境下正常工作,测试用的。

2

主题

15

回帖

114

积分

一级会员

积分
114
 楼主| 发表于 2018-5-26 16:47:28 | 显示全部楼层
nlysh007 发表于 2018-5-25 13:42
我要说的是匹配的范围,,你写的规则,你看下范围,当然只会返回一个

我测试也是,直接匹配到最后了,改了之后,就行了。谢谢了。
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2025-6-16 00:08 , Processed in 0.066370 second(s), 25 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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