使用Python和regex找到正确的URL

时间:2016-05-05 11:07:22

标签: python regex url

我有一个像

这样的网址表
vk.com/albums54751623?z=photo54751623_341094858%2Fphotos54751623
vk.com/albums54751623
vk.com/id36375649
vk.com/id36375649

我需要找到所有urls,例如vk.com/id36375649(仅id) 我试试

for url in urls:
    if url == re.compile('vk.com/^[a-z0-9]'):
        print url
    else:
        continue

但这是不正确的,因为它没有返回任何东西

2 个答案:

答案 0 :(得分:2)

您可以使用startswith

strs = ['vk.com/albums54751623?z=photo54751623_341094858%2Fphotos54751623',
'vk.com/albums54751623',
'vk.com/id36375649',
'vk.com/id36375649']
print([x for x in strs if x.startswith(r'vk.com/id')])

请参阅IDEONE demo

更新

要解决本答案下面评论中陈述的问题,您必须使用带有一些检查的正则表达式:

^vk\.com/(?!album)\w+$

请参阅regex demoPython demo

import re
strs = ['vk.com/albums54751623?z=photo54751623_341094858%2Fphotos54751623',
'vk.com/albums54751623',
'vk.com/id36375649',
'vk.com/id36375649',
'vk.com/id36375649?z=album-28413960_228518010',
'vk.com/tania_sevostianova'
]
print([x for x in strs if re.search(r'^vk\.com/(?!album)\w+$', x)])
# => ['vk.com/id36375649', 'vk.com/id36375649', 'vk.com/tania_sevostianova']

答案 1 :(得分:0)

如下所示的正则表达式可能起作用

vk.com\/id\d+

请记住,在正则表达式中,您需要转义某些字符,例如斜杠。