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

求Python正则表达式:提取文本中含RQ的XML标签内容

提取含“RQ”的XML标签内容的Python正则表达式

问题分析

你之前的正则表达式失效的核心原因:

  • 开始标签与结束标签的名称未关联,可能匹配到不对应的闭合标签
  • 标签名匹配逻辑不严谨,会误捕获标签内的属性内容

正确正则表达式方案

使用带反向引用的正则,确保首尾标签名称一致,同时准确匹配标签属性与内部内容:

import re

# 示例文本
text = """
<ServiceRQ>want everything between...</ServiceRQ>
<ServiceRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">want everything between</ServiceRQ>
"""

# 正则模式
pattern = r"<([^\s>]+RQ)([^>]*)>(.*?)</\1>"

# 查找所有匹配项,re.DOTALL允许.匹配换行符
matches = re.findall(pattern, text, re.DOTALL)

# 输出结果
for idx, match in enumerate(matches, 1):
    full_tag = f"<{match[0]}{match[1]}>{match[2]}</{match[0]}>"
    print(f"{idx}. {full_tag}")

正则模式拆解

  • <([^\s>]+RQ):捕获以RQ结尾的标签名称,[^\s>]+确保只匹配标签名(排除空格和>,避免误取属性)
  • ([^>]*):匹配标签内的所有属性内容(比如xmlns:xsi="...")
  • (.*?):非贪婪匹配标签中间的文本内容
  • </\1>:通过反向引用\1,确保结束标签和开始标签的名称完全一致

输出结果

运行代码后将得到你期望的结果:

1. <ServiceRQ>want everything between...</ServiceRQ>
2. <ServiceRQ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">want everything between</ServiceRQ>

注意:如果XML存在标签嵌套场景,正则无法可靠处理,建议使用专业XML解析库(如xml.etree.ElementTree)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:54:26