鱼C论坛

 找回密码
 立即注册
查看: 868|回复: 5

[已解决]写正则的时候有点不明白

[复制链接]
发表于 2018-6-23 12:13:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
审查元素中的信息是这样的  <img alt="原来女生穿古装这么好看,第1张" src="http://mm.chinasareview.com/wp-content/uploads/2017a/05/19/01.jpg">

之后我写的正则 r'<img alt=".*" src=".*\.jpg" >'每次都找不到信息,
我打开html之后看到的信息是<img alt="原来女生穿古装这么好看,第1张" src="http://mm.chinasareview.com/wp-content/uploads/2017a/05/19/01.jpg" /><br />
然后我在最后加了一个/ 即r'<img alt=".*" src=".*\.jpg" />'
突然图片都找出来了,这个是什么原因,难道每次写正则都要去解码后的HTML找?因为在审查元素中看不到那个/,不知道是不是我不会看,所以特地来请教下。
最佳答案
2018-6-23 15:08:45
本帖最后由 凌九霄 于 2018-6-23 15:14 编辑
yejiangmin 发表于 2018-6-23 13:22
是刚学,你写的这个不懂哎,能解释下吗


稍写简单点
  1. <img(?:[^"]+")*http://(?:[^/]+/)*(\d+\.jpg)
  2. <img                这个不消说
  3. (?:[^"]+")*           括号会产生分组,里面带上"?:"表示只参与匹配不产生分组。[^"]+" 表示匹配不包含 " 号的内容直到遇到 第一个 " 号为止,它会匹配到<img alt="为止。括号外面的 * 号表示按照括号里面的尽量匹配,是贪婪模式,一直匹配到jpg后面的那个引号为止
  4. http://                   前面的*号后面加上http://后,正则引擎会逐步吐出不匹配的字符,从jpg后面的引号开始往回吐,直到遇到http://
  5. (?:[^/]+/)*            跟前面那个一个意思,尽量匹配 /  ,所以,它会匹配到01.jpg前面的那个 / 为止
  6. (\d+\.jpg)              不消说
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-6-23 12:45:39 | 显示全部楼层
本帖最后由 凌九霄 于 2018-6-23 12:52 编辑

从你写的正则看得出来你初学正则,同样的匹配有多种方式,殊途同归,多观察多练习就熟练了。

我也写一个:
  1. <img(?:[^"]+")*http://(?:[^/]+/)*(?<=\/)(\d+\.jpg)
复制代码


360截图20180623124320027.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-23 13:22:44 | 显示全部楼层
是刚学,你写的这个不懂哎,能解释下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-23 15:08:45 | 显示全部楼层    本楼为最佳答案   
本帖最后由 凌九霄 于 2018-6-23 15:14 编辑
yejiangmin 发表于 2018-6-23 13:22
是刚学,你写的这个不懂哎,能解释下吗


稍写简单点
  1. <img(?:[^"]+")*http://(?:[^/]+/)*(\d+\.jpg)
  2. <img                这个不消说
  3. (?:[^"]+")*           括号会产生分组,里面带上"?:"表示只参与匹配不产生分组。[^"]+" 表示匹配不包含 " 号的内容直到遇到 第一个 " 号为止,它会匹配到<img alt="为止。括号外面的 * 号表示按照括号里面的尽量匹配,是贪婪模式,一直匹配到jpg后面的那个引号为止
  4. http://                   前面的*号后面加上http://后,正则引擎会逐步吐出不匹配的字符,从jpg后面的引号开始往回吐,直到遇到http://
  5. (?:[^/]+/)*            跟前面那个一个意思,尽量匹配 /  ,所以,它会匹配到01.jpg前面的那个 / 为止
  6. (\d+\.jpg)              不消说
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-6-24 12:36:00 From FishC Mobile | 显示全部楼层
第五行(?:[^/]+/)这个为什么是匹配到最后一个/为止,不应该是第一个/就会停吗?这里有点不懂,不过还是很感谢大佬前面帮我解释的这么详细
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-6-25 08:43:51 | 显示全部楼层
yejiangmin 发表于 2018-6-24 12:36
第五行(?:[^/]+/)这个为什么是匹配到最后一个/为止,不应该是第一个/就会停吗?这里有点不懂,不过还是很感 ...

因为后面有个*号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 21:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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