Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用于从URL解析uid的正则表达式_Python_Regex - Fatal编程技术网

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

Python 用于从URL解析uid的正则表达式,python,regex,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+,它输出正确的字符串

我正在尝试从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
您可以使用一个捕获组:

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

试试
(?简而言之,您可以使用

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
见此和a:

注意

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

re.search(r'/d/(\w+),s).组(1)
@WiktorStribiżew真棒,正如预期的那样工作,谢谢!它在regexr.com中不起作用,但我想它是python依赖项。在python中工作很好,所以没关系。请随意回答这个问题,如果你愿意,我会接受。你需要使用其他人提到的组。不过,如果你想要的是在第四个正斜杠之后,您可以使用string.split(“/”)[5]我经常发现这比regex更容易做这类事情。@Neil Spliting是我目前的方法,我只是觉得regex更健壮,因为这个url是由第三方应用程序(Grafana)生成的,我不负责更改。我想知道您是否有“不完整的转义\x“在尝试正则表达式时。请不要转义
/
,它不是任何特殊的元字符。我认为您不必在开始时检查
http
。您认为
http://d/1a2b3c4d5
是否有可能输入?@WiktorStribiżew-Ha,这是一个公平的观点。你的答案是正确的,也是最完整的。你投了赞成票。