正则表达式,用于从URL解析uid

时间:2019-06-11 10:34:20

标签: python regex

我正在尝试从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

3 个答案:

答案 0 :(得分:2)

您可以使用捕获组:

https?://.*?/d/([^/\s]+)

Regex demo

答案 1 :(得分:2)

尝试(?<=/d/)[^/]+

说明:

(?<=/d/)-向后看,请确保前面是/d/

[^/]+-匹配/以外的一个或多个字符,因此它匹配所有内容,直到/

Demo

答案 2 :(得分:2)

简而言之,您可以使用

match = re.search(r'/d/(\w+)', your_string)  # Look for a match
if match:                                    # Check if there is a match first
    print(match.group(1))                    # Now, get Group 1 value

请参见此regex demoregex graph

enter image description here

注意

  • /不是任何特殊的元字符,请不要在Python字符串模式中将其转义
  • ([/d/]+[\d\x])\w+匹配并捕获第一个组中的任何一个或多个斜杠或数字(请参见[/d/]+,一个正字符类),然后匹配一个数字或(此处,Python显示错误:{{1 }},可能会将其解析为sre_contants.error incomplete escape \x,但事实并非如此),然后匹配1个以上的字符字符。您将x放入字符类,它停止匹配 char序列/d/匹配斜杠和数字以任何顺序和数量匹配,并且肯定将该字符串放入组1中。