鱼C论坛

 找回密码
 立即注册
查看: 2008|回复: 4

[已解决]反向引用里的 "或者” 怎么写?

[复制链接]
发表于 2023-5-15 08:19:58 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 blackantt 于 2023-5-15 08:21 编辑

a1 = re.findall('<a class="read_online".*?data-srcset="(.*?\.jpg).*?<div',x2, re.S)    是正常能取出来 jpg 的,想加个 或者 png
a1 = re.findall('<a class="read_online".*?data-srcset="(.*?\.[jpg|png]).*?<div',x2, re.S)  

取出来的就是少了2个字母的串
Create-a-Book.j
Create-a-Book1.p

想取出

Create-a-Book.jpg
Create-a-Book1.png

最佳答案
2023-5-15 08:20:15
可以将正则表达式中的"[jpg|png]"改为"(jpg|png)",并在反向引用中使用"\1"来表示匹配到的文件类型。修改后的代码如下:

a1 = re.findall('<a class="read_online".*?data-srcset="(.*?)\.(jpg|png).*?<div',x2, re.S)
result = [filename[0] + '.' + filename[1] for filename in a1]

这样可以取出完整的文件名,其中"."前面的部分为第一个捕获组的内容,即"a1"中匹配到的内容,"."后面的部分为第二个捕获组的内容,即文件类型。最后使用列表推导式将文件名拼接起来即可。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-15 08:20:15 | 显示全部楼层    本楼为最佳答案   
可以将正则表达式中的"[jpg|png]"改为"(jpg|png)",并在反向引用中使用"\1"来表示匹配到的文件类型。修改后的代码如下:

a1 = re.findall('<a class="read_online".*?data-srcset="(.*?)\.(jpg|png).*?<div',x2, re.S)
result = [filename[0] + '.' + filename[1] for filename in a1]

这样可以取出完整的文件名,其中"."前面的部分为第一个捕获组的内容,即"a1"中匹配到的内容,"."后面的部分为第二个捕获组的内容,即文件类型。最后使用列表推导式将文件名拼接起来即可。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-15 08:25:35 | 显示全部楼层
isdkz 发表于 2023-5-15 08:20
可以将正则表达式中的"[jpg|png]"改为"(jpg|png)",并在反向引用中使用"\1"来表示匹配到的文件类型。修改后 ...

有没有不拼接的,改动小的懒办法呢?   后面正则还很长。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-15 09:32:44 | 显示全部楼层
学习中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-15 11:41:14 | 显示全部楼层
blackantt 发表于 2023-5-15 08:25
有没有不拼接的,改动小的懒办法呢?   后面正则还很长。

我刚起床,之前的脚本自动答的

你可以试试这个看看,我这里使用了不保存分组:

a1 = re.findall('<a class="read_online".*?data-srcset="(.*?\.(?:jpg|png)).*?<div',x2, re.S)  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 05:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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