需要使用Regex删除两个标签之间的空白区域

时间:2013-09-13 15:41:56

标签: c# regex

我有一些XML,我想剥离外部空白区域。作为前言:输出不是很好的形式xml,这是我降级为处理的一个预设规范。

样本是:

<mattext>
  <span>A</span>
  <span>more text</span>
 </mattext>

我需要的是:

<mattext><span>A</span>
  <span>more text</span></mattext>

开头<mattext>与内部内容的第一位之间的所有空格都消失了,而结束</mattext>的空格也相同。

我试过了:

var output = Regex.Replace(input, @"<mattext>*<", "<mattext>", 
             RegexOptions.Multiline);

但我没有运气。有人可以建议吗?

谢谢!

4 个答案:

答案 0 :(得分:3)

尝试使用:

var output = Regex.Replace(input, @"(?<=<mattext>)\s*|\s*(?=</mattext>)", "");

regex101 demo

(?<=<mattext>)是一个积极的外观,并确保在空格和换行符之前有<mattext>

(?=</mattext>)是一个积极的前瞻,并确保在空格和换行符之后有</mattext>

答案 1 :(得分:2)

var output = Regex.Replace(input, @"<mattext>\s*<", "<mattext><", RegexOptions.Multiline);

答案 2 :(得分:1)

与@Jerry的回答类似,有额外的保护,以确保<mattext>在输入开始时,</mattext>结束。

Regex.Replace(input,
  @"(?:(?<=^\<mattext\>)[^\<]*)|(?:[^\>]*(?=\</mattext\>$))",
  string.Empty,
  RegexOptions.Multiline);

答案 3 :(得分:0)

它不是空白,它是\ r或\ n甚至两者都是\ r \ n

相关问题