我有这个字符串:
http://pastebin.com/XXXXXXXhttp://pastebin.com/XXXXXX\r
我需要提取一行中以\ r结尾的所有链接。它可以包含一个链接甚至五个链接。我有这样的事情:
(http[s]*:.*)[\\r|h]
但它将整行作为一个匹配返回, 任何想法?
答案 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
或行尾。
答案 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)