鱼C论坛

 找回密码
 立即注册
查看: 2254|回复: 12

[已解决]Python小白从挖坑到脱坑之路010_关于正则表达式

[复制链接]
发表于 2018-3-6 20:50:42 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 大头目 于 2018-3-6 20:51 编辑

挖坑:不是很理解标注红色的两块地方为什么那么写,匹配到的是下面'''中的内容
脱坑(现阶段理解):.*?是代表匹配任意字符0次?
[^"]*按照小甲鱼书上的表格不是应该是匹配"开头的0或多次吗?为什么可以匹配https://imgsa.baidu.com/forum/w%3D580/sign=f9cf09409c25bc312b5d01906ede8de7/
8f0ede0735fae6cdafb377ef0ab30f2443a70fda这么大一串?
类似坑:暂无


import urllib.request
import re
response = urllib.request.urlopen('http://tieba.baidu.com/p/3823765471')
html = response.read().decode('utf-8')
p = r'<img class="BDE_Image".*?src="[^"]*\.jpg".*?>'
'''<img class="BDE_Image" src="https://imgsa.baidu.com/forum/w%3D580/sign=f9cf09409c25bc312b5d01906ede8de7/
8f0ede0735fae6cdafb377ef0ab30f2443a70fda.jpg" pic_ext="jpeg"  changedsize="true" width="560" height="497">'''

imglist = re.findall(p,html)
for each in imglist:
        print(each)
最佳答案
2018-3-6 21:13:44
.*?是非贪婪模式
[^"]是贪婪模式,[]是字符类。字符类里脱字符表示取反,即不是引号都拿来

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-3-6 21:13:44 | 显示全部楼层    本楼为最佳答案   
.*?是非贪婪模式
[^"]是贪婪模式,[]是字符类。字符类里脱字符表示取反,即不是引号都拿来
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-6 23:14:13 | 显示全部楼层
塔利班 发表于 2018-3-6 21:13
.*?是非贪婪模式
[^"]是贪婪模式,[]是字符类。字符类里脱字符表示取反,即不是引号都拿来

好的谢谢,顺便在问一下如果要匹配下面两行,用一句正则表达式怎么写?关键是中间带了换行符我就不知道怎么组合正则表达式了。
  1.     <td>61.135.217.7</td>
  2.     <td>80</td>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-6 23:37:05 | 显示全部楼层
大头目 发表于 2018-3-6 23:14
好的谢谢,顺便在问一下如果要匹配下面两行,用一句正则表达式怎么写?关键是中间带了换行符我就不知道怎 ...
  1. p=r'<td>(([01]?\d?\d|2[0-4]\d|25[0-5])\.){3}([01]?\d?\d|2[0-4]\d|25[0-5])</td>[\n]+?<td>\d{1,4}</td>'
  2. tar='<td>61.135.217.7</td>\n<td>80</td>'
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 08:39:27 | 显示全部楼层
匹配到换行符之类对的符号时,用%s代替
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 08:41:36 | 显示全部楼层
对于这种情况,建议最好是用beautiful soup
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 12:56:39 | 显示全部楼层
塔利班 发表于 2018-3-6 21:13
.*?是非贪婪模式
[^"]是贪婪模式,[]是字符类。字符类里脱字符表示取反,即不是引号都拿来


.*?的非贪婪模式不是等于匹配任意字符0次吗?那为什么能匹配到空格啊?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 12:58:14 | 显示全部楼层
JAY饭 发表于 2018-3-7 08:41
对于这种情况,建议最好是用beautiful soup

能举个例子吗?谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 13:19:32 | 显示全部楼层
大头目 发表于 2018-3-7 12:56
.*?的非贪婪模式不是等于匹配任意字符0次吗?那为什么能匹配到空格啊?

非贪婪模式.*?他本身虽然可以什么都不匹配,但是有可匹配的对象他还是能匹配的,不然为什么是{0,}这里非贪婪只是不从文档最低端找到后边符合的内容
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-7 15:19:38 | 显示全部楼层
塔利班 发表于 2018-3-7 13:19
非贪婪模式.*?他本身虽然可以什么都不匹配,但是有可匹配的对象他还是能匹配的,不然为什么是{0,}这里非 ...

".*?s还不是很理解,可以理解为"和s之间无论有多少字符都匹配吗?如果开启贪婪模式可能会忽略第一个s而匹配到下一个s?有点晕,但实际去掉?匹配出来的内容确实有所不同
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-7 16:49:06 | 显示全部楼层
大头目 发表于 2018-3-7 15:19
".*?s还不是很理解,可以理解为"和s之间无论有多少字符都匹配吗?如果开启贪婪模式可能会忽略第一个s而匹 ...

开启贪婪到结尾找S,非贪婪找最近的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-8 08:23:29 | 显示全部楼层
你这个不太好说,你给的html太短了
一旦html变长变复杂,用正则就会越来越复杂越容易混乱。
beautifulsoup 是专门针对html格式的文档
https://cuiqingcai.com/1319.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-8 09:13:47 | 显示全部楼层
JAY饭 发表于 2018-3-8 08:23
你这个不太好说,你给的html太短了
一旦html变长变复杂,用正则就会越来越复杂越容易混乱。
beautifulsou ...

感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-8 05:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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