C# 正则表达式:将空格替换为 XML 标记

Posted

技术标签:

【中文标题】C# 正则表达式:将空格替换为 XML 标记【英文标题】:C# Regex: Replace whitespace into XML tag 【发布时间】:2021-04-24 02:55:38 【问题描述】:

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

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

替换为:

<TAG1>bla bla bla</TAG1>

这是我写的:

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

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

感谢您的帮助!

【问题讨论】:

喜欢这个? regex101.com/r/YL2iPP/1 【参考方案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 属性。

以上是关于C# 正则表达式:将空格替换为 XML 标记的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式替换markdown文件代码块标记中的所有空格

正则表达式替换以删除 html 标记之间的空格

正则表达式 - 将 HTML 转换为有效的 XML 标记 [重复]

C# 正则表达式 Replace的功能

正则表达式在任何 xml 标记中添加属性

使用正则表达式关闭打开的 XML 标记