正则表达式,用于确定字符串是否以数字结尾/包含数字之间的'//'



我正在尝试评估跳出率,为此,我正在循环访问网址列表。我的问题是我有这样的字符串,例如:

  • www.example.com/43/test-1
  • www.example2.com/32/test-2

而且我无法找出一个正则表达式来测试字符串是否以这种格式结尾:

  • 斜杠数字斜杠字符串 ->/number/string

到目前为止,我设法得到的是获取所有带有斜杠数字的 URL:

[x["page"] for x in data if re.search(r'd/+$', x["page"])]

但仅此而已

您可以使用

/d+/[^/]+$

模式匹配

  • /-/
  • d+- 1+ 位数字
  • /-/
  • [^/]+- 1+ 字符,除/
  • $- 字符串的结尾。

请参阅Python演示:

import re
urls = ['www.example.com/43/test-1', 'www.example2.com/32/test-2']
for url in urls:
m = re.search(r'/d+/[^/]+$', url)
if m:
print(m.group())

结果:

/43/test-1
/32/test-2

若要仅获取数字,请使用捕获组包装d+,并通过.group(1)访问值:

re.search(r'/(d+)/[^/]+$', url)
if m:
print(m.group(1))

单行:

print([re.search(r'/d+/[^/]+$', url).group(0) for url in urls if re.search(r'/d+/[^/]+$', url)])
# => ['/43/test-1', '/32/test-2']
print([re.search(r'/(d+)/[^/]+$', url).group(1) for url in urls if re.search(r'/d+/[^/]+$', url)])
# => ['43', '32']

我认为您很接近,只需要稍作修改:

re.search(r'd/[^/]+$', x["page"])

这将匹配在倒数第二个路径位置具有数字的所有 URL,后跟在最终位置的一个或多个任何类型的字符。

最新更新