Python正则匹配以price开头currency结尾的独立子串问题
解决贪婪匹配问题的Python正则方案
问题根源是正则默认的贪婪匹配行为,会从第一个"price"匹配到最后一个"currency",改成非贪婪匹配即可解决。
正确正则表达式
import re # 匹配以"price"开头、"currency"结尾的独立子串 pattern = r'"price":.*?"currency":".*?"' # 从目标字符串中提取所有匹配项 matches = re.findall(pattern, your_parsed_string)
关键说明
.*?:非贪婪匹配模式,会尽可能匹配最短的符合条件的内容,确保每个"price"对应最近的"currency",不会跨块匹配- 如果目标字符串包含换行符,需要添加
re.DOTALL参数让.匹配换行:matches = re.findall(pattern, your_parsed_string, re.DOTALL)
示例验证
假设目标字符串为:
"price": 123,"description":"ice-cream","currency":"CAD","price": 456,"description":"cake","currency":"USD"
执行后会得到两个独立的匹配结果:
"price": 123,"description":"ice-cream","currency":"CAD""price": 456,"description":"cake","currency":"USD"
内容的提问来源于stack exchange,提问作者Okay
相关产品推荐
相关产品推荐

