使用Python和正则表达式查找正确的URL
我有一个包含URL的表,如使用Python和正则表达式查找正确的URL,python,regex,url,Python,Regex,Url,我有一个包含URL的表,如 vk.com/albums54751623?z=photo54751623_341094858%2Fphotos54751623 vk.com/albums54751623 vk.com/id36375649 vk.com/id36375649 我需要找到所有url如vk.com/id36375649(仅id) 我试着 但这是不正确的,因为它没有返回任何内容您可以使用startswith: strs = ['vk.com/albums54751623?z=photo
vk.com/albums54751623?z=photo54751623_341094858%2Fphotos54751623
vk.com/albums54751623
vk.com/id36375649
vk.com/id36375649
我需要找到所有url
如vk.com/id36375649
(仅id
)
我试着
但这是不正确的,因为它没有返回任何内容您可以使用
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')])
见
更新
要解决此答案下面评论中所述的问题,您必须使用带有一些检查的正则表达式:
^vk\.com/(?!album)\w+$
见附录a和a:
下面这样的正则表达式可能会起作用
vk.com\/id\d+
请记住,在正则表达式中,您需要转义某些字符,如斜杠。Nice!您并不总是需要正则表达式:)我认为,如果有一种很好的语言方法,并且数据是干净的、结构化的,则不需要正则表达式。如果不是这样的话,当然,类似regex的可以是非常方便的一些URL,比如
vk.com/id36375649?z=album-28413960_228518010
。我不需要,你的意思是你不想要一个带有查询字符串的vk.com ID链接吗?你正在动态地更改问题。那你可以试试正则表达式。尝试请参阅更新。请尝试“vk\.com\/id\d+”
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']
vk.com\/id\d+