Python正则表达式匹配与提取特定字符串问题求助
正则表达式解决方案
需求回顾
- 提取
Property后到&前的内容 - 提取
Category后到&前的内容 - 匹配从
"cat"到modifiedBy前最后一个逗号的完整内容
目标字符串:
"cat":"Property : TikTok Videos & Category : Insta Videos & User Impact: TBD & User Minutes : 18","modifiedBy"
问题分析
当前正则的核心问题是对category的匹配逻辑:用\w+只能匹配单个单词,改成\w+.*?后因缺少明确终止符,非贪婪匹配会延伸到字符串末尾。
具体解决正则
1. 同时提取Property和Category
通过明确的终止符&限制非贪婪匹配范围,搭配命名分组实现精准捕获:
"cat":"Property : (?P<property>.*?) & Category : (?P<category>.*?) &
- 效果:
property捕获TikTok Videos,category捕获Insta Videos - 原理:
.*?是非贪婪匹配,遇到第一个&就停止,刚好截取到目标字段内容
若需单独提取某字段,可使用:
- 提取Property:
Property : (.*?) & - 提取Category:
Category : (.*?) &
2. 捕获完整的cat字段内容
利用正向预查定位modifiedBy的位置,精准截取目标范围:
("cat":".*?")(?=","modifiedBy")
- 效果:捕获到
"cat":"Property : TikTok Videos & Category : Insta Videos & User Impact: TBD & User Minutes : 18" - 原理:
(?=","modifiedBy")是正向预查,仅匹配到","modifiedBy之前的位置,避免过度截取
验证结果
所有正则代入目标字符串后,完全符合期望的输出结果。
内容的提问来源于stack exchange,提问作者Bruce Banner
相关产品推荐
相关产品推荐

