Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python和正则表达式查找正确的URL_Python_Regex_Url - Fatal编程技术网

使用Python和正则表达式查找正确的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

我有一个包含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=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+