【问题标题】:c# regex I cannot remove two lines from text because of the spacingc# regex 由于间距,我无法从文本中删除两行
【发布时间】:2014-07-24 13:54:44
【问题描述】:

我想从 xml 中删除其中一行,但我猜是因为间距而无法删除它。任何人都可以帮助我使用正则表达式吗?我不是这方面的专家。

这是我要删除的 xml 行...

  <otv_ek44_Bildirimi>
<otv_ek44_Bildirimi>

我想从 xml 中删除这两行之一,不管之前、中间或之后的任何间距。我该怎么做?

这是我糟糕的代码。

string s2 = @"      <otv_ek44_Bildirimi>
    <otv_ek44_Bildirimi>";
fileContents = Regex.Replace(fileContents, s2, "");

【问题讨论】:

  • 这看起来不像一个正则表达式,你似乎在做一个直接的字符串替换。你考虑过String.Replace吗? 但是使用 XML Parser/API(.NET 有四个)操作 XML 要好得多,因为 XML 不是“常规”(在正式意义上),所以很有可能使用正则表达式只会让事情变得更糟。

标签: c# xml regex


【解决方案1】:

如果您真的想使用正则表达式,请尝试将您的 s2 正则表达式中的空格替换为 \s+(=匹配多个空格字符 - 空格、制表符等)。

string s2 = @"\s+<otv_ek44_Bildirimi>
\s+<otv_ek44_Bildirimi>";

我强烈建议在这种情况下使用string.Replace(old, new)

此外,我建议不要使用字符串操作或正则表达式修改 XML 或任何结构化数据。您可以使用 XML 解析器,或使用 CsQuery 在您的 XML 上运行类似 jQuery(CSS) 的查询并以这种方式对其进行操作。

【讨论】:

  • 它不会取代它,因为我不确定有多少空格
  • 我同意你的看法,但我必须这样做,而且我没有太多时间。
  • @ayilmaz 我更新了我的答案,给出了一个你应该使用的正则表达式的例子。但是,如果您有任何其他选择,请不要使用正则表达式来修改/解析 XML。
猜你喜欢
  • 1970-01-01
  • 2018-05-22
  • 2020-06-15
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
  • 1970-01-01
  • 2018-05-24
  • 2020-03-12
相关资源
最近更新 更多