【问题标题】:Find right URLs using Python and regex使用 Python 和正则表达式查找正确的 URL
【发布时间】:2016-08-31 03:33:35
【问题描述】:

我有一张带有类似网址的表格

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

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

【问题讨论】:

  • 试试'vk\.com\/id\d+'

标签: python regex url


【解决方案1】:

你可以使用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

更新

要解决此答案下方 cmets 中所述的问题,您必须使用带有一些检查的正则表达式:

^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']

【讨论】:

  • 不错!你并不总是需要正则表达式:)
  • 我认为如果有一个好的语言方法,并且数据是干净和结构化的,则不需要正则表达式。如果不是这样,当然,像r'vk\.com/id\d+' 这样的正则表达式会非常方便
  • 一些网址,例如vk.com/id36375649?z=album-28413960_228518010。我不需要那个
  • 您的意思是您不想要带有查询字符串的 vk.com ID 链接?
  • 您正在即时更改问题。那你可以试试正则表达式。试试r'^vk\.com/(?!album)\w+$'。查看更新。
【解决方案2】:

像下面这样的正则表达式可能会起作用

vk.com\/id\d+

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-12
    • 2017-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多