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

Python正则:匹配特定字符串前后内容并提取值存入字典

正则提取与字典存储方案

直接针对你的需求写精准正则,就能提取目标内容并存入字典:

分步提取代码

import re

target_str = "Code:<em>1</em>,Some text some other text {fdf: more text, <strong>attr</strong>=<em>important</em> "
# 提取第一个<em>里的数值
code_num = re.findall(r'<em>(\d+)</em>', target_str)[0]
# 匹配<strong>attr</strong>关联的<em>内容
attr_content = re.findall(r'<strong>attr</strong>=<em>(.*?)</em>', target_str)[0]
# 转成字典
result_dict = {"code": code_num, "important_attr": attr_content}
print(result_dict)  # 输出 {'code': '1', 'important_attr': 'important'}

一次性匹配方案

如果想一步到位,用带re.DOTALL的正则适配可能存在换行的通用场景:

matches = re.findall(r'Code:<em>(\d+)</em>.*?<strong>attr</strong>=<em>(.*?)</em>', target_str, re.DOTALL)
result_dict = {"code": matches[0][0], "important_attr": matches[0][1]}

你之前的正则问题在哪?

你用的(?<=testcaseid_)[^_]+_[^_]+和当前需求完全不搭——这个正则是用来抓取testcaseid_后面两段下划线分隔的内容,和你要提取的<em>标签、<strong>attr</strong>关联内容毫无关系,自然会抓到无关内容。

关键提醒

  • 用.*?非贪婪匹配,防止匹配到超出目标标签的多余内容
  • 必须通过前置的Code:、<strong>attr</strong>这类特征锁定目标<em>,避免误抓其他<em>标签的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 17:05:15