如何使用正则表达式提取此类网址

时间:2018-07-15 02:53:43

标签: regex python-3.x

以下是文本:

<a class="mkapp-btn mab-download"  href="javascript:void(0);" onclick="zhytools.downloadApp('C100306099', 'appdetail_dl', '24', 'http:&#x2F;&#x2F;appdlc.hicloud.com&#x2F;dl&#x2F;appdl&#x2F;application&#x2F;apk&#x2F;f4&#x2F;f44d320c2c1b466389e6f6b3d3f5cff4&#x2F;com.uniquestudio.android.iemoji.1806141014.apk?sign=portal@portal1531621480529&amp;source=portalsite' , 'v1.1.4');">

我要提取

http:&#x2F;&#x2F;appdlc.hicloud.com&#x2F;dl&#x2F;appdl&#x2F;application&#x2F;apk&#x2F;f4&#x2F;f44d320c2c1b466389e6f6b3d3f5cff4&#x2F;com.uniquestudio.android.iemoji.1806141014.apk?sign=portal@portal1531621480529&amp;source=portalsite

我使用以下代码将其提取。

m = re.search("mkapp-btn mab-download.*'http:&#x2F;&#x2F;[^']'", apk_page)

我认为,我可以使用.*来匹配mkapp-btn mab-downloadhttp之间的字符串。但是我失败了。

编辑

我也尝试过。

m = re.search("(?<=mkapp-btn mab-download.*)http:&#x2F;&#x2F;[^']'", apk_page)

1 个答案:

答案 0 :(得分:1)

您需要在排除(+)之后添加[^'],因为该字符不止一个。另外,您需要使用括号分组以仅提取所需的部分。

m = re.search("mkapp-btn mab-download.*'(http[^']+)'", apk_page)
m.groups()

输出将是

('http:&#x2F;&#x2F;appdlc.hicloud.com&#x2F;dl&#x2F;appdl&#x2F;application&#x2F;apk&#x2F;f4&#x2F;f44d320c2c1b466389e6f6b3d3f5cff4&#x2F;com.uniquestudio.android.iemoji.1806141014.apk?sign=portal@portal1531621480529&amp;source=portalsite',)