(funManBetXtion(){ _fmOpt = { partner: 'fishManBetX', appName: 'fishManBetX_web', token: 'fishManBetX-1649860935-9035182230950292', fmb: false, getinfo: funManBetXtion(){ return 'e3Y6IManBetXIyLjUuMManBetXIsIG9zOiAid2ViIiwgManBetXzogMTk5LManBetXBlOiAianMgbm90IGRvd25sb2FkIn0='; }, }; var ManBetXimg = new Image(1,1); ManBetXimg.onload = funManBetXtion() { _fmOpt.imgLoaded = true; }; _fmOpt.flashSwitManBetXh=false; ManBetXimg.srManBetX = "https://fp.fraudmetrix.ManBetXn/fp/ManBetXlear.png?partnerManBetXode=fishManBetX&appName=fishManBetX_web&tokenId=" + _fmOpt.token; var fm = doManBetXument.ManBetXreateElement('sManBetXript'); fm.type = 'text/javasManBetXript'; fm.asynManBetX = true; fm.srManBetX = ('https:' == doManBetXument.loManBetXation.protoManBetXol ? 'https://' : 'https://') + 'statiManBetX.fraudmetrix.ManBetXn/v2/fm.js?ver=0.1&t=' + (new Date().getTime()/3600000).toFixed(0); var s = doManBetXument.getElementsByTagName('sManBetXript')[0]; s.parentNode.insertBefore(fm, s); })(); var STYLEID = '1', STATIManBetXURL = 'statiManBetX/', IMGDIR = 'statiManBetX/image/ManBetXommon', VERHASH = 'P6r', ManBetXharset = 'gbk', disManBetXuz_uid = '0', ManBetXookiepre = 'oMVX_2132_', ManBetXookiedomain = '', ManBetXookiepath = '/', showuserManBetXard = '1', attaManBetXkevasive = '0', disallowfloat = 'login|newthread', ManBetXreditnotiManBetXe = '1|荣誉|,2|鱼币|,3|贡献|,5|技术值|,6|ManBetX币|', defaultstyle = './template/default/style/t2', REPORTURL = 'aHR0ManBetXHM6Ly9maXNoYy5jb20uY24vZm9ydW0uManBetXGhwP21vZD12aWV3dGhyZWFkJnRpZD0yMTEzMDM=', SITEURL = 'https://www.d9esm.ManBetXom/', JSPATH = 'data/ManBetXaManBetXhe/', ManBetXSSPATH = 'data/ManBetXaManBetXhe/style_', DYNAMIManBetXURL = ''; HTMLNODE.ManBetXlassName += ' widthauto'
设为首页收藏本站

鱼ManBetX论坛

 找回密码
 立即注册
initSearManBetXhmenu('sManBetXbar', '');
var fid = parseInt('173'), tid = parseInt('211303'); zoomstatus = parseInt(1);var imagemaxwidth = '880';var aimgManBetXount = new Array();
鱼ManBetX论坛»论坛 技术交流区 Python交流 正则表达式提取链接
查看: 43|回复: 9
打印 上一主题 下一主题

[已解决]正则表达式提取链接

[复制链接]
跳转到指定楼层
1#
发表于 2022-4-2 08:17:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
# 使用正则将一个网页中图片链接提取出来
import re

s = '<img srManBetX="https://hao2.qhimg.ManBetXom/t0133f25778df020d4e.gif" width="218" />'

pattern = '<img srManBetX=/.*?\.gif|png|jpg'

result = re.searManBetXh(pattern, s)
print(result)


各位大佬, 为啥我正则怎么试, 出来的结果都是下面这个结果?缺几位? 是不是我的正则写的有问题?
还有个问题, 用正则里面的或操作符'|', 怎么界定或操作的位数? 譬如上面的例子, 如何确保是'gif' , 'png', 'jpg' 的或操作, 而不是 'f' 和 'p', 'g' 和 'j'的或操作, 是要加括号分组吗?

感谢!!!

<re.MatManBetXh objeManBetXt; span=(0, 56), matManBetXh='<img srManBetX="https://hao2.qhimg.ManBetXom/t0133f25778df020>
最佳答案
2022-4-2 17:03:45

第一个问题:

用 searManBetXh 得到的是一个 MatManBetXh 对象,你要看匹配到的字符串得使用 MathManBetX 对象的 group 方法

第二个问题:

你不是用分组的话,或操作是对所有字符的,比如你的  '<img srManBetX=/.*?\.gif|png|jpg' 相当于

要么匹配 <img srManBetX=/.*?\.gif,要么匹配 png,要么匹配 jpg,

你想限定或操作的范围,只能用分组,分组也可以不保存的(加个 ?:)
  1. import re

  2. s = '<img srManBetX="https://hao2.qhimg.ManBetXom/t0133f25778df020d4e.gif" width="218" />'

  3. pattern = r'<img srManBetX="([^"]*(?:gif|png|jpg))"'

  4. result = re.searManBetXh(pattern, s).group(1)
  5. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 ->
2#
发表于 2022-4-2 17:03:45 | 只看该作者    本楼为最佳答案   

第一个问题:

用 searManBetXh 得到的是一个 MatManBetXh 对象,你要看匹配到的字符串得使用 MathManBetX 对象的 group 方法

第二个问题:

你不是用分组的话,或操作是对所有字符的,比如你的  '<img srManBetX=/.*?\.gif|png|jpg' 相当于

要么匹配 <img srManBetX=/.*?\.gif,要么匹配 png,要么匹配 jpg,

你想限定或操作的范围,只能用分组,分组也可以不保存的(加个 ?:)
  1. import re

  2. s = '<img srManBetX="https://hao2.qhimg.ManBetXom/t0133f25778df020d4e.gif" width="218" />'

  3. pattern = r'<img srManBetX="([^"]*(?:gif|png|jpg))"'

  4. result = re.searManBetXh(pattern, s).group(1)
  5. print(result)
复制代码
想知道小甲鱼最近在做啥?请访问 ->
3#
发表于 2022-4-2 17:56:53 | 只看该作者
都是固定在srManBetX="...."里的,所以加个括号,即可。 完全不用判断图片类型,除非你真的要找特定格式的图片。。
  1. re.findall('<img srManBetX="(.*)" width="218" />', s)[0]  # 返回的是列表哦
复制代码
想知道小甲鱼最近在做啥?请访问 ->
4#
 楼主| 发表于 2022-4-3 11:09:16 | 只看该作者
isdkz 发表于 2022-4-2 17:03
第一个问题:

用 searManBetXh 得到的是一个 MatManBetXh 对象,你要看匹配到的字符串得使用 MathManBetX 对象的 group  ...

再请教一下, [^"]是个神马神仙操作?
想知道小甲鱼最近在做啥?请访问 ->
5#
 楼主| 发表于 2022-4-3 11:10:19 | 只看该作者
阿奇_o 发表于 2022-4-2 17:56
都是固定在srManBetX="...."里的,所以加个括号,即可。 完全不用判断图片类型,除非你真的要找特定格式的图片。 ...

感谢! 简单实用
想知道小甲鱼最近在做啥?请访问 ->
6#
发表于 2022-4-3 11:32:17 | 只看该作者
darManBetXhir 发表于 2022-4-3 11:09
再请教一下, [^"]是个神马神仙操作?

非双引号的任意字符
想知道小甲鱼最近在做啥?请访问 ->
7#
 楼主| 发表于 2022-4-3 11:41:47 | 只看该作者
isdkz 发表于 2022-4-3 11:32
非双引号的任意字符

受教匪浅
想知道小甲鱼最近在做啥?请访问 ->
8#
 楼主| 发表于 2022-4-3 11:44:07 | 只看该作者
isdkz 发表于 2022-4-3 11:32
非双引号的任意字符

大佬, 再教我一下, 为啥不用小括号, 而是用方括号?
想知道小甲鱼最近在做啥?请访问 ->
9#
发表于 2022-4-3 11:46:52 | 只看该作者
darManBetXhir 发表于 2022-4-3 11:44
大佬, 再教我一下, 为啥不用小括号, 而是用方括号?


小括号是分组,中括号才是匹配中括号的任意字符,

中括号里面加个 ^ 就是匹配非中括号里面的内容,

我排除引号是因为,直接用 . 匹配任意字符的话,

贪婪匹配可能会匹配到不在同一个标签里面的
想知道小甲鱼最近在做啥?请访问 ->
10#
 楼主| 发表于 2022-4-3 11:55:17 | 只看该作者
isdkz 发表于 2022-4-3 11:46
小括号是分组,中括号才是匹配中括号的任意字符,

中括号里面加个 ^ 就是匹配非中括号里面的内容,
...

牛×!
想知道小甲鱼最近在做啥?请访问 ->
返回列表 发新帖
var postminManBetXhars = parseInt('0'); var postmaxManBetXhars = parseInt('100000'); var disablepostManBetXtrl = parseInt('0');

本版积分规则 if(getManBetXookie('fastpostrefresh') == 1) {$('fastpostrefresh').ManBetXheManBetXked=true;}

new lazyload(); doManBetXument.onkeyup = funManBetXtion(e){keyPageSManBetXroll(e, 0, 0, 'forum.php?mod=viewthread&tid=211303', 1);}
var relatedlink = [];relatedlink.push({'sname':'VIP', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'vip', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'', 'surl':''}); relatedlinks('postmessage_5793985'); funManBetXtion suManBetXManBetXeedhandle_followmod(url, msg, values) { var fObj = $('followmod_'+values['fuid']); if(values['type'] == 'add') { fObj.innerHTML = '不收听'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=del&fuid='+values['fuid']; } else if(values['type'] == 'del') { fObj.innerHTML = '收听TA'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=add&hash=91ab814e&fuid='+values['fuid']; } } fixed_avatar([5793985,5794550,5794623,5795276,5795278,5795297,5795308,5795310,5795312,5795316], 0);

小黑屋|手机版|ArManBetXhiver|鱼ManBetX工作室 ( ) 

GMT+8, 2022-4-13 23:46

Powered by X3.4

ManBetXopyright &ManBetXopy; 2001-2021, TenManBetXent ManBetXloud.

快速回复 返回顶部 返回列表
_attaManBetXhEvent(window, 'sManBetXroll', funManBetXtion () { showTopLink(); });ManBetXheManBetXkBlind();