【问题标题】:Removing block of code with regex not enough 's [duplicate]使用 regex not enough 删除代码块 [重复]
【发布时间】:2019-02-21 01:18:00
【问题描述】:

我正在尝试删除我的代码的以下部分:

<!-- 
NewPP limit report
Preprocessor node count: 1/300000
Post‐expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Expensive parser function count: 0/100
-->

<!-- Saved in parser cache with key creepypasta:pcache:idhash:29041-0!*!*!*!*!2!* -->

我尝试了以下方法:

body = Regex.Replace(body, @"(<!-- (.*?) -->", "");

但我收到一个错误:

解析不够。正则表达式

我可以使用正则表达式删除上面的代码块吗?

它从这个 url http://creepypasta.wikia.com/wiki/She_Was_Asking_for_It 返回正则表达式的以下代码

【问题讨论】:

  • 究竟会返回什么?
  • 抱歉,更新了我的 OP。
  • 不,不是屏幕截图,将从您提供的示例和处理后的 example 文本中删除什么。不是原始来源。
  • . 默认不匹配换行符。 RegexOptions.Singleline 使 . 能够匹配换行符。而第一个 ( 只需要删除。

标签: c# regex


【解决方案1】:

@"(&lt;!-- (.*?) --&gt;" 缺少)。试试@"(&lt;!-- (.*?) --&gt;)"

这回答了失败,但你的模式是谨慎的。我会用

(?&lt;=&lt;!--).+?(?=--&gt;)

查看 &lt;!-- 的后面和 --&gt; 的前瞻。还将其设置为Multiline 以跨越行。

【讨论】:

  • 作为这个答案的补充,对于 OP,我建议使用像 Regex101 这样的在线工具来原型正则表达式模式。它将有助于指出这些简单的错别字。
  • 仍然没有删除上面的代码:(
  • @dontmindmeyo 这也有助于确保您的模式正常工作。如果您查看this application of your pattern,您提供的文本与我认为您的预期不匹配,因为您在模式中包含空格。
  • @dontmindmeyo 已更新以供我使用。您的问题不是直接要求结果,而是如何解决错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
相关资源
最近更新 更多