1

我有一些 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

4 回答 4

3

Try using:

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

regex101 demo

(?<=<mattext>) is a positive lookbehind and makes sure there is <mattext> before the spaces and newlines.

(?=</mattext>) is a positive lookahead and makes sure there is </mattext> after the spaces and newlines.

于 2013-09-13T15:44:44.997 回答
2
var output = Regex.Replace(input, @"<mattext>\s*<", "<mattext><", RegexOptions.Multiline);
于 2013-09-13T15:44:47.693 回答
1

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

Regex.Replace(input,
  @"(?:(?<=^\<mattext\>)[^\<]*)|(?:[^\>]*(?=\</mattext\>$))",
  string.Empty,
  RegexOptions.Multiline);
于 2013-09-13T15:51:22.450 回答
0

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

于 2013-09-13T15:43:34.543 回答