我有一个像
这样的网址表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
但这是不正确的,因为它没有返回任何东西
答案 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+$
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+
请记住,在正则表达式中,您需要转义某些字符,例如斜杠。