2024-05-21 08:39:55 发布
网友
我不熟悉regex,有人能帮我举个例子吗? 我有一个python API调用的json输出,json如下所示:
{ "key": "/my/task/ca4e0240d6ce447554f805e118928", "key2": "values" }
在这种情况下,如何使用re来查找ca4e0240d6ce447554f805e118928
ca4e0240d6ce447554f805e118928
提前谢谢
如果您坚持使用regex,则可以这样做,它将同时适用于/和\,但这是完全不必要的,您应该使用os.path模块:
/
\
os.path
import re d = { "key": "/my/task/ca4e0240d6ce447554f805e118928", "key2": "values" } match = re.search(r"[/|\\](\w+)$", d["key"]).groups()[0] print(match)
您还可以使用str.split()获得所需的输出,如以下示例所示:
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'
您不需要regex,您需要basename来提取路径分隔字符串的最右边部分:
basename
import os d = { "key": "/my/task/ca4e0240d6ce447554f805e118928", "key2": "values" } print(os.path.basename(d["key"]))
结果:
(请注意,即使标准路径分隔符是\,它也适用于Windows)
另一种方法(仍然没有regex),使用str.rpartition:
str.rpartition
print(d["key"].rpartition("/")[2])
正则表达式:删除斜杠之前的所有内容(贪心):
print(re.sub(".*/","",d["key"]))
如果您坚持使用regex,则可以这样做,它将同时适用于
/
和\
,但这是完全不必要的,您应该使用os.path
模块:您还可以使用
str.split()
获得所需的输出,如以下示例所示:或者如果您的输出同时具有
'/'
和/或'\'
,您可以使用如下lambda函数:两者都将输出:
您不需要regex,您需要
basename
来提取路径分隔字符串的最右边部分:结果:
(请注意,即使标准路径分隔符是
\
,它也适用于Windows)另一种方法(仍然没有regex),使用
str.rpartition
:正则表达式:删除斜杠之前的所有内容(贪心):
相关问题 更多 >
编程相关推荐