【问题标题】:Remove dashes in xml tag only with regex仅使用正则表达式删除 xml 标记中的破折号
【发布时间】:2019-02-27 13:14:01
【问题描述】:

我必须管理几乎没有损坏的解码 XML 文件,并且我正在尝试以编程方式修复它们。

其中之一是,例如,我有一个结束标签损坏的开始标签

所以,我需要删除包含在 字符中的单词(正则表达式中的 \w 因为它也可以包含数字)之间的破折号

我已经构建了这个正则表达式

(?<=\w)-(?=\w)

但它匹配 \w 之间的每个破折号。我只需要匹配 中包含的那些:

<text-numbers>

你能帮帮我吗? 提前非常感谢您

安德烈亚

【问题讨论】:

  • 尝试用$1$2替换(\G(?!^)|&lt;/?)(\w*)-
  • @WiktorStribiżew 谢谢,但由于 /?我在这里测试正则表达式regex101.com/r/ob6CtF/2
  • 我也在测试那里 - no errors。在目标环境中测试。
  • 是的,有效!非常感谢!
  • 很高兴my answer 为您工作。如果我的回答对您有帮助(请参阅How to upvote on Stack Overflow?),也请考虑投票,因为您在达到 15 个代表点后有权获得投票特权。请注意,您可以对所有有用的答案进行投票。

标签: regex xml tags


【解决方案1】:

我建议

(\G(?!^)|</?)(\w*)-

替换为$1$2。请参阅regex demo

详情

  • (\G(?!^)|&lt;/?) - 第 1 组(替换模式中的$1):前一个匹配的结尾或&lt; 后面带有可选的/(如果您在正则表达式文字中使用/ 定义模式)作为分隔符,将/ 转义为\/)
  • (\w*) - 第 2 组(替换模式中的$2):零个或多个单词字符
  • - - 一个连字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多