Skip to main content
 首页 » 编程设计

python之使用 Python 和正则表达式查找正确的 URL

2024年10月24日32leader

我有一个像这样的 url 的表

vk.com/albums54751623?z=photo54751623_341094858%2Fphotos54751623 
vk.com/albums54751623 
vk.com/id36375649 
vk.com/id36375649 

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

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

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

请您参考如下方法:

您可以使用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 demo和一个 Python 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']