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