鱼C论坛

 找回密码
 立即注册
查看: 1132|回复: 7

[已解决]正则表达式结尾问题

[复制链接]
发表于 2022-3-22 13:48:55 | 显示全部楼层 |阅读模式

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

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

x
ui='<video class="video-small" id="videosmall" autoplay="" crossorigin="anonymous" loop="" src="https://vd2.bdstatic.com/mda-nckd33p1p6dd8igv/cae_h264_delogo/1647854913822034441/mda-nckd33p1p6dd8igv.mp4?v_from_s=hkapp-haokan-hnb&amp;auth_key=1647921548-0-0-5d05585767419032e4a3f644fa853af1&amp;bcevod_channel=searchbox_feed&amp;pd=1&amp;vt=1&amp;cd=0&amp;watermark=0&amp;did=&amp;logid=1748363977&amp;vid=911389646208710823&amp;pt=0&amp;appver=&amp;model=&amp;cr=0&amp;abtest=peav_l52&amp;sle=1&amp;sl=320&amp;split=298735" style="width: 238px; height: 134px;"></video><video class="art-video" preload="metadata" crossorigin="anonymous" autoplay="" src="https://vd4.bdstatic.com/mda-nckhek3dbwp00478/sc/cae_h264_delogo/1647866695166866916/mda-nckhek3dbwp00478.mp4?v_from_s=hkapp-haokan-hnb&amp;auth_key=1647921548-0-0-75ad69749dc9894b70fefe2ae6f61558&amp;bcevod_channel=searchbox_feed&amp;cd=0&amp;pd=1&amp;pt=3&amp;logid=1747979696&amp;vid=9340172854313612982&amp;abtest=100815_1-101130_2-17451_2&amp;klogid=1747979696"></video><video class="video-small" id="videosmall" autoplay="" crossorigin="anonymous" loop="" src="https://vd2.bdstatic.com/mda-nbkg882mxu2ddzaa/cae_h264_nowatermark_delogo/1645443119480177002/mda-nbkg882mxu2ddzaa.mp4?v_from_s=hkapp-haokan-hnb&amp;auth_key=1647921548-0-0-22a9ee13589689c684cc3b734b4fd39d&amp;bcevod_channel=searchbox_feed&amp;pd=1&amp;vt=1&amp;cd=0&amp;watermark=0&amp;did=&amp;logid=1748363977&amp;vid=8319953855371380823&amp;pt=0&amp;appver=&amp;model=&amp;cr=0&amp;abtest=peav_l52&amp;sle=1&amp;sl=527&amp;split=469076" style="width: 238px; height: 134px;"></video>'

t=re.findall('^[src=].*split=\d*$',ui)
print(t)

我想把src开头,然后用split=一串数字结尾的链接提取出来。但结果返回空集
最佳答案
2022-3-22 14:02:51
  1. import re

  2. ui='<video class="video-small" id="videosmall" autoplay="" crossorigin="anonymous" loop="" src="https://vd2.bdstatic.com/mda-nckd33p1p6dd8igv/cae_h264_delogo/1647854913822034441/mda-nckd33p1p6dd8igv.mp4?v_from_s=hkapp-haokan-hnb&amp;auth_key=1647921548-0-0-5d05585767419032e4a3f644fa853af1&amp;bcevod_channel=searchbox_feed&amp;pd=1&amp;vt=1&amp;cd=0&amp;watermark=0&amp;did=&amp;logid=1748363977&amp;vid=911389646208710823&amp;pt=0&amp;appver=&amp;model=&amp;cr=0&amp;abtest=peav_l52&amp;sle=1&amp;sl=320&amp;split=298735" style="width: 238px; height: 134px;"></video><video class="art-video" preload="metadata" crossorigin="anonymous" autoplay="" src="https://vd4.bdstatic.com/mda-nckhek3dbwp00478/sc/cae_h264_delogo/1647866695166866916/mda-nckhek3dbwp00478.mp4?v_from_s=hkapp-haokan-hnb&amp;auth_key=1647921548-0-0-75ad69749dc9894b70fefe2ae6f61558&amp;bcevod_channel=searchbox_feed&amp;cd=0&amp;pd=1&amp;pt=3&amp;logid=1747979696&amp;vid=9340172854313612982&amp;abtest=100815_1-101130_2-17451_2&amp;klogid=1747979696"></video><video class="video-small" id="videosmall" autoplay="" crossorigin="anonymous" loop="" src="https://vd2.bdstatic.com/mda-nbkg882mxu2ddzaa/cae_h264_nowatermark_delogo/1645443119480177002/mda-nbkg882mxu2ddzaa.mp4?v_from_s=hkapp-haokan-hnb&amp;auth_key=1647921548-0-0-22a9ee13589689c684cc3b734b4fd39d&amp;bcevod_channel=searchbox_feed&amp;pd=1&amp;vt=1&amp;cd=0&amp;watermark=0&amp;did=&amp;logid=1748363977&amp;vid=8319953855371380823&amp;pt=0&amp;appver=&amp;model=&amp;cr=0&amp;abtest=peav_l52&amp;sle=1&amp;sl=527&amp;split=469076" style="width: 238px; height: 134px;"></video>'

  3. t=re.findall(r'src="([^>]*?split=\d*)"',ui)
  4. print(len(t))
  5. print(t)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-22 14:02:51 | 显示全部楼层    本楼为最佳答案   
  1. import re

  2. ui='<video class="video-small" id="videosmall" autoplay="" crossorigin="anonymous" loop="" src="https://vd2.bdstatic.com/mda-nckd33p1p6dd8igv/cae_h264_delogo/1647854913822034441/mda-nckd33p1p6dd8igv.mp4?v_from_s=hkapp-haokan-hnb&amp;auth_key=1647921548-0-0-5d05585767419032e4a3f644fa853af1&amp;bcevod_channel=searchbox_feed&amp;pd=1&amp;vt=1&amp;cd=0&amp;watermark=0&amp;did=&amp;logid=1748363977&amp;vid=911389646208710823&amp;pt=0&amp;appver=&amp;model=&amp;cr=0&amp;abtest=peav_l52&amp;sle=1&amp;sl=320&amp;split=298735" style="width: 238px; height: 134px;"></video><video class="art-video" preload="metadata" crossorigin="anonymous" autoplay="" src="https://vd4.bdstatic.com/mda-nckhek3dbwp00478/sc/cae_h264_delogo/1647866695166866916/mda-nckhek3dbwp00478.mp4?v_from_s=hkapp-haokan-hnb&amp;auth_key=1647921548-0-0-75ad69749dc9894b70fefe2ae6f61558&amp;bcevod_channel=searchbox_feed&amp;cd=0&amp;pd=1&amp;pt=3&amp;logid=1747979696&amp;vid=9340172854313612982&amp;abtest=100815_1-101130_2-17451_2&amp;klogid=1747979696"></video><video class="video-small" id="videosmall" autoplay="" crossorigin="anonymous" loop="" src="https://vd2.bdstatic.com/mda-nbkg882mxu2ddzaa/cae_h264_nowatermark_delogo/1645443119480177002/mda-nbkg882mxu2ddzaa.mp4?v_from_s=hkapp-haokan-hnb&amp;auth_key=1647921548-0-0-22a9ee13589689c684cc3b734b4fd39d&amp;bcevod_channel=searchbox_feed&amp;pd=1&amp;vt=1&amp;cd=0&amp;watermark=0&amp;did=&amp;logid=1748363977&amp;vid=8319953855371380823&amp;pt=0&amp;appver=&amp;model=&amp;cr=0&amp;abtest=peav_l52&amp;sle=1&amp;sl=527&amp;split=469076" style="width: 238px; height: 134px;"></video>'

  3. t=re.findall(r'src="([^>]*?split=\d*)"',ui)
  4. print(len(t))
  5. print(t)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-3-22 14:19:53 | 显示全部楼层

你太牛了~!!
我想问问是不是带了括号就表示的匹配的内容就是括号内“t=\d*)”,表示最后是数字结尾
还有[^>]这个^是表示开始,那么>表示啥呀,搭配上^,可以详细解释一下吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-22 14:23:15 | 显示全部楼层

那比如我想找http开头,mp4结尾,可以这样写吗?
t=re.findall(r'^http.*\.mp4$',ui)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-22 14:26:26 | 显示全部楼层
hunter魔术师 发表于 2022-3-22 14:19
你太牛了~!!
我想问问是不是带了括号就表示的匹配的内容就是括号内“t=\d*)”,表示最后是数字结尾
...


有分组的话 findall 只会匹配分组里面的,

你用 ^ $ 会匹配整行的开头和结尾,匹配不上就匹配不上,

所以不应该用 ^ $,我在中括号里面加 ^ 不是代表开头的意思,而是排除,[^>] 是匹配除了 > 以外的任意字符,

你可以试试把 [^>] 替换回 . ,你就知道我为什么要用 [^>] 了,因为任意字符,即使中间有已经结束的标签也会匹配上
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-22 14:37:44 | 显示全部楼层
isdkz 发表于 2022-3-22 14:26
有分组的话 findall 只会匹配分组里面的,

你用 ^ $ 会匹配整行的开头和结尾,匹配不上就匹配不上, ...

那匹配http开头,带mp4结尾呢
t=re.findall(r'(https://.*\w*\.mp4)',ui) 我这样写,出不来结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-22 14:40:56 | 显示全部楼层
hunter魔术师 发表于 2022-3-22 14:37
那匹配http开头,带mp4结尾呢
t=re.findall(r'(https://.*\w*\.mp4)',ui) 我这样写,出不来结果

正则表达式中的全部都要获取不需要加分组

t=re.findall(r'https://.*?.mp4',ui)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-22 14:56:13 | 显示全部楼层
isdkz 发表于 2022-3-22 14:40
正则表达式中的全部都要获取不需要加分组

t=re.findall(r'https://.*?.mp4',ui)

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-29 13:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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