我对正则表达式不熟悉,有人可以帮助我这个例子吗? 我有一个来自python API调用的json输出,json看起来像这样:
{
"key": "/my/task/ca4e0240d6ce447554f805e118928",
"key2": "values"
}
在这种情况下,如何使用re查找ca4e0240d6ce447554f805e118928
?
提前致谢!
答案 0 :(得分:2)
你不需要正则表达式,你需要basename
来提取路径分离字符串的最右边部分:
import os
d = {
"key": "/my/task/ca4e0240d6ce447554f805e118928",
"key2": "values"
}
print(os.path.basename(d["key"]))
结果:
ca4e0240d6ce447554f805e118928
(请注意,它也适用于Windows,即使标准路径分隔符为\
)
使用str.rpartition
替代方式(仍然没有正则表达式):
print(d["key"].rpartition("/")[2])
正则表达式:在斜线斜线(贪婪)之前删除所有内容:
print(re.sub(".*/","",d["key"]))
答案 1 :(得分:0)
您还可以使用str.split()
获得所需的输出,如下例所示:
a = {
"key": "/my/task/ca4e0240d6ce447554f805e118928",
"key2": "values"
}
print(a["key"].split("/")[-1])
或者,如果您的输出同时具有'/'
和/或'\'
,则可以使用这样的lambda函数:
get_string = lambda x: x["key"].split("/")[-1] if '/' in x["key"] else x["key"].split("\\")[-1]
print(get_string(a))
两者都会输出:
'ca4e0240d6ce447554f805e118928'
答案 2 :(得分:0)
如果你坚持使用正则表达式,你可以这样做,它适用于/
和\
,但这完全没必要,你应该使用os.path
模块:< / p>
import re
d = {
"key": "/my/task/ca4e0240d6ce447554f805e118928",
"key2": "values"
}
match = re.search(r"[/|\\](\w+)$", d["key"]).groups()[0]
print(match)