我正在尝试评估跳出率,为此,我正在循环访问网址列表。我的问题是我有这样的字符串,例如:
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,后跟在最终位置的一个或多个任何类型的字符。