正则表达式在一行中查找链接

时间:2016-05-07 10:50:33

标签: python regex

我有这个字符串:

http://pastebin.com/XXXXXXXhttp://pastebin.com/XXXXXX\r

我需要提取一行中以\ r结尾的所有链接。它可以包含一个链接甚至五个链接。我有这样的事情:

(http[s]*:.*)[\\r|h]

但它将整行作为一个匹配返回, 任何想法?

4 个答案:

答案 0 :(得分:1)

您可以在findall中使用这个基于前瞻性的正则表达式:

>>> s='http://pastebin.com/XXXXXXXhttp://pastebin.com/XXXXXX\r'
>>> re.findall(r'https?://.+?(?=https?://|[\r\n]|$)', s)
['http://pastebin.com/XXXXXXX', 'http://pastebin.com/XXXXXX']

(?=http://|[\r\n]|$) 肯定前瞻,断言下一个位置为http://\r\n或行尾。

RegEx Demo

答案 1 :(得分:0)

尝试一下:(https?:\/\/[^\\r|h]+)

答案 2 :(得分:0)

试试这个

va = 'http://pastebin.com/XXXXXXXhttp://pastebin.com/XXXXXX\r'
import re
vac = re.findall(r"(?:https?:\/+)([^\r|h]+)",va)
print vac   

答案 3 :(得分:0)

你不需要正则表达式。试试这个:

mylinks = []
with open('yourfile', 'r') as f:
    for line in f.readlines():
        for link in line.split('http'):
            mylinks.append('http'+link)

编辑:看起来你只需要一个字符串而不是整个文件。跑吧:

mylinks = []
for link in mystring.split('http'):
    mylinks.append('http'+link)