如何从regex python获取字符串

2024-05-21 08:39:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉regex,有人能帮我举个例子吗? 我有一个python API调用的json输出,json如下所示:

{
  "key": "/my/task/ca4e0240d6ce447554f805e118928",
  "key2": "values"
}

在这种情况下,如何使用re来查找ca4e0240d6ce447554f805e118928

提前谢谢


Tags: keyreapijsontaskmy情况例子
3条回答

如果您坚持使用regex,则可以这样做,它将同时适用于/\,但这是完全不必要的,您应该使用os.path模块:

import re
d = {
  "key": "/my/task/ca4e0240d6ce447554f805e118928",
  "key2": "values"
}
match = re.search(r"[/|\\](\w+)$", d["key"]).groups()[0]
print(match)

您还可以使用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来提取路径分隔字符串的最右边部分:

import os

d = {
  "key": "/my/task/ca4e0240d6ce447554f805e118928",
  "key2": "values"
}

print(os.path.basename(d["key"]))

结果:

ca4e0240d6ce447554f805e118928

(请注意,即使标准路径分隔符是\,它也适用于Windows)

另一种方法(仍然没有regex),使用str.rpartition

print(d["key"].rpartition("/")[2])

正则表达式:删除斜杠之前的所有内容(贪心):

print(re.sub(".*/","",d["key"]))

相关问题 更多 >