我正在尝试评估跳出率,为了做到这一点,我正在遍历网址列表。我的问题是我有这样的字符串,例如:
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"])]
就是这样
答案 0 :(得分:1)
您可以使用
/\d+/[^/]+$
模式匹配
/
-一个/
\d+
-1个以上数字/
-一个/
[^/]+
-除/
以外的1个以上的字符$
-字符串的结尾。请参见Python demo:
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']
答案 1 :(得分:0)
我认为您很亲近,只需稍作修改即可。
re.search(r'\d/[^/]+$', x["page"])
这将匹配在倒数第二个路径位置带有数字的所有URL,最后一个位置带有一个或多个任何类型的字符。