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

如何用正则仅移除XML标签中的连字符?

解决XML标签内连字符的精准移除问题

嘿Andrea!我懂你遇到的问题——你写的(?<=\w)-(?=\w)确实能匹配所有字母数字间的连字符,但没法区分标签内外,这就很头疼对吧?

其实只要给你的正则加上标签范围的环视约束,就能精准锁定<>内部的目标连字符了。试试这个正则:

(?<=<[^>]*\w)-(?=\w[^>]*>)

拆解一下这个正则的逻辑:

  • (?<=<[^>]*\w):反向预查,确保连字符前面是<开头,中间是任意非>的字符(意味着还在标签内部),最后紧跟一个字母数字\w
  • -:就是你要移除的那个目标连字符
  • (?=\w[^>]*>):正向预查,确保连字符后面是一个字母数字\w,接着是任意非>的字符,最后以>收尾(确保仍在标签内部)

举个实际的例子:
原始内容:<text-numbers>hello-world</text-numbers>
替换后:<textnumbers>hello-world</textnumbers>
你看,标签里的-被移除了,但文本里的hello-world完全不受影响,完美符合你的需求!

如果用Python来实现的话,代码大概是这样:

import re

# 损坏的XML内容
broken_xml = "<user-id>my-name-is-andrea</user-id><product-code>abc-123-def</product-code>"
# 执行替换
fixed_xml = re.sub(r'(?<=<[^>]*\w)-(?=\w[^>]*)', '', broken_xml)
print(fixed_xml)
# 输出:<userid>my-name-is-andrea</userid><productcode>abc-123-def</productcode>

这个方案能处理标签内多个连字符的情况,也不会误碰标签外的内容,应该能帮你搞定XML修复的问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:03:32