【问题标题】:C# Regex: Replace whitespace into XML tagC# 正则表达式:将空格替换为 XML 标记
【发布时间】:2026-01-01 05:15:01
【问题描述】:

我正在寻找一个将空格替换为 XML 标记的正则表达式。 例如:

<TAG 1>bla bla bla</TAG 1>

替换为:

<TAG1>bla bla bla</TAG1>

这是我写的:

string currentLine = Regex.Replace(currentLine,
@"(?<=\</?\S*)\s+(?=\S*\>)", String.Empty);

但它不起作用,因为它也在 2 个标签之间删除...

感谢您的帮助!

【问题讨论】:

标签: c# regex xml


【解决方案1】:

您应该记住,\S 匹配 任何 非空白字符,这就是为什么如果某些文本粘在 &lt;&gt; 上,您可能会匹配角度之外的空格括号。

你可以使用

var result = Regex.Replace(text, @"(?<=<[^<>]*)\s(?=[^<>]*>)", "");

请参阅regex demo。详情:

  • (?&lt;=&lt;[^&lt;&gt;]*) - 紧跟在&lt; 前面的位置,然后是除&lt;&gt; 之外的任何零个或多个字符
  • \s - 一个空格
  • (?=[^&lt;&gt;]*&gt;) - 紧跟在&lt;&gt; 之外的任何零个或多个字符的位置,然后是&gt;

【讨论】:

  • 好,+1,但值得注意的是,这是假设没有 XML 属性。