如何使用regex python 3.x提取引号内的值

2024-04-23 21:42:28 发布

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

我有追随者

\"url\": \"\\\/maru.php?superalox=1\", \"params\": {\"params\": \"EgtmbUtXdUZWdDF2SSoCCABQAQ%3D%3D\", \"session_value\": \"QUFFLUhqbnQ4eW5HeEZYdDBULU5EVk1LREU2VndMMm1nd3xBQ3Jtc0trMUlMOWRqTWxpS0pOT2pNUVN6RENVU3k0Tmc4blplodexsWkxrVDRmOUN2Q0lXVkl1N0YwUFhoV1puQ3ZFQm10X1RzNWR4Q3RUeG5kMkdLNnNobTUyRkNuaG90d2c=\"}, \"log_params\":

我想提取params的值,它是EgtmbUtXdUZWdDF2SSoCCABQAQ%3D%3D

我试过这个,但没用

my_text = """ \"url\": \"\\\/maru.php?superalox=1\", \"params\": {\"params\": \"EgtmbUtXdUZWdDF2SSoCCABQAQ%3D%3D\", \"session_value\": \"QUFFLUhqbnQ4eW5HeEZYdDBULU5EVk1LREU2VndMMm1nd3xBQ3Jtc0trMUlMOWRqTWxpS0pOT2pNUVN6RENVU3k0Tmc4blplodexsWkxrVDRmOUN2Q0lXVkl1N0YwUFhoV1puQ3ZFQm10X1RzNWR4Q3RUeG5kMkdLNnNobTUyRkNuaG90d2c=\"}, \"log_params\": """

extract_data = re.search(r'(\\\"params\": \\\")(\w*)', my_text)
print(extract_data)

谢谢


2条回答

您可以使用:

re.search(r'"params": "([^"]+)"', my_text).group(1)

我成功地使用了以下方法:

(["'])(?:(?=(\\?))\2.)*?\1

它还支持嵌套引号。你知道吗

这同样有效:([“'])(\?)*?\1易于阅读。你知道吗

对于那些想要更深入地解释其工作原理的人,这里有一个来自用户ephemient的解释:

([""']) match a quote; ((?=(\\?))\2.) if backslash exists, gobble it, and whether or not that happens, match a character; *? match many times (non-greedily, as to not eat the closing quote); \1 match the same quote that was use for opening.

这是从另一个答案复制过来的:RegEx: Grabbing values between quotation marks

相关问题 更多 >