【发布时间】:2019-10-25 18:18:16
【问题描述】:
我正在尝试从 URL 中解析 UID。但是正则表达式不是我擅长的,所以寻求帮助。
示例输入:
https://example.com/d/iazs9fEil/somethingelse?foo=bar
示例输出:
iazs9fEil
到目前为止我尝试过的是
([/d/]+[\d\x])\w+
以某种方式起作用,但返回时带有 /d/ 前缀,因此输出为 /d/iazs9fEil。
如何将正则表达式更改为不包含 /d/ 前缀?
编辑:
我试过这个正则表达式([^/d/]+[\d\x])\w+,它输出正确的字符串iazs9fEil,但也返回url的其余部分,所以这里是somethingelse?foo=bar
【问题讨论】:
-
re.search(r'/d/(\w+)', s).group(1) -
@WiktorStribiżew 太棒了,按预期工作,谢谢!它在 regexr.com 中不起作用,但我猜它是 python 依赖项。在 python 中工作正常,所以没关系。随意将此作为答案,如果您愿意,我会接受。
-
您需要使用其他人提到的组。只是一个提示,如果您要查找的内容始终在第 4 个正斜杠之后,您可以使用 string.split('/')[5] 我经常发现这比正则表达式更容易处理这类事情。
-
@Neil Spliting 是我目前的方法,我只是觉得正则表达式更健壮,因为这个 url 是由第三方应用程序 (Grafana) 生成的,我不负责更改。跨度>
-
我想知道你在尝试你的正则表达式时是否有“不完整的转义\x”。