【问题标题】:regex - double quote to double-double quote escape in xml tags正则表达式 - xml标签中的双引号转双双引号转义
【发布时间】:2015-08-17 18:59:49
【问题描述】:

我有以下字符串,我想使用 Regex Replace 将所有引号 (") 替换为双引号 ("")。我只想替换 > 和

示例: 之前

<Root>
    <Elem1>Hello "ds e"" 1293"</Elem1>
    <Elem2>sDieo " qqq "" dwe</Elem2>
</Root>

之后

<Root>
    <Elem1>Hello ""ds e"""" 1293""</Elem1>
    <Elem2>sDieo "" qqq """" dwe</Elem2>
</Root>

没有字符串。请替换,只有正则表达式

【问题讨论】:

  • 不需要正则表达式。使用:string output = input.Replace("\"", "\"\"");
  • 我什至不知道从哪里开始。这就是为什么我问...
  • @jdweng 它也会替换 xml 中的任何属性。

标签: c# regex


【解决方案1】:

你可以搜索这个并替换:

/"(?![^<]*?>)/g

演示:https://regex101.com/r/vZ9vW0/1

编辑:

包括正则表达式以防止匹配,除了内部标签:

"(?=[^<>\n]*?<\/[^<>\n]*>)

【讨论】:

  • 它还匹配第一个
  • " ?
  • 我尝试尽可能多地排除外部标签。 regex101.com/r/vZ9vW0/3 请注意,这意味着它不适用于与结束标记不在同一行的节点内容。这是我能想到的防止标签前匹配的唯一方法。如果需要,可以尝试删除字符组中的 \n 中的任何一个,看看是否得到了所需的内容。
猜你喜欢
  • 2013-05-10
  • 1970-01-01
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-01
  • 1970-01-01
  • 2020-11-26
  • 1970-01-01
相关资源
最近更新 更多