You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用正则表达式完整提取引号内的目标值?

解决正则表达式无法提取完整值的问题

这问题我经常遇到——你的正则表达式字符范围没覆盖到目标值里的特殊符号,所以才只拿到了一部分内容。先理清楚你的场景:

你的原始文本:

my_text = """ ["supra","value":"ddad7f1eada3c52c66cmh6ZG8tf-nLt1A596b7URouAxiT1JKph-ceBld-ISJapdG6bKrE1kvru158hLUBx2GdzABc6PHP-gNbnD8A=="}};</script> """

需要提取的完整值是:

ddad7f1eada3c52c66cmh6ZG8tf-nLt1A596b7URouAxiT1JKph-ceBld-ISJapdG6bKrE1kvru158hLUBx2GdzABc6PHP-gNbnD8A==

你之前用的代码:

extract_posted_data = re.search(r'(\"value\": \")(\w*)', my_text)
print(extract_posted_data.group(2))

结果只拿到了ddad7f1eada3c52c66cmh6ZG8tf,核心原因是:\w这个正则元字符只匹配字母、数字和下划线,而你的目标值里还有-和=,这些不在\w的匹配范围内,所以正则匹配到第一个-就自动停止了。

两种可行的修改方案

方案1:扩大匹配的字符范围

直接把\w*替换成包含-和=的字符集[\w\-=]*,这样就能覆盖目标值里的所有字符:

import re

my_text = """ ["supra","value":"ddad7f1eada3c52c66cmh6ZG8tf-nLt1A596b7URouAxiT1JKph-ceBld-ISJapdG6bKrE1kvru158hLUBx2GdzABc6PHP-gNbnD8A=="}};</script> """
extract_posted_data = re.search(r'"value": "([\w\-=]*)"', my_text)
print(extract_posted_data.group(1))

方案2:匹配到下一个双引号前的所有字符(更通用)

如果不确定目标值未来会不会出现其他特殊字符,推荐用更灵活的写法:匹配从双引号开始,到下一个双引号结束的所有内容(除了双引号本身),用[^"]*(^在字符集里表示“非”,也就是匹配所有不是双引号的字符):

import re

my_text = """ ["supra","value":"ddad7f1eada3c52c66cmh6ZG8tf-nLt1A596b7URouAxiT1JKph-ceBld-ISJapdG6bKrE1kvru158hLUBx2GdzABc6PHP-gNbnD8A=="}};</script> """
extract_posted_data = re.search(r'"value": "([^"]*)"', my_text)
print(extract_posted_data.group(1))

这个方案适应性更强,不管目标值里有什么字符(只要不在双引号内),都能完整提取。

内容的提问来源于stack exchange,提问作者elrich bachman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 09:25:32