【问题标题】:How to match all text between two strings multiline如何匹配两个字符串多行之间的所有文本
【发布时间】:2014-08-14 01:21:04
【问题描述】:

我正在尝试完成与here 相同的事情:

即假设你有这样的文字:

<p>something</p>

<!-- OPTIONAL -->

<p class="sdf"> some text</p>
<p> some other text</p>

<!-- OPTIONAL END -->

<p>The end</p>

匹配的正则表达式是什么:

<p class="sdf"> some text</p>
<p> some other text</p>

我已经设置了一个live test here 使用:

<!-- OPTIONAL -->(.*?)<!-- OPTIONAL END -->

但它没有正确匹配。页面上接受的答案也对我不起作用。我错过了什么?

【问题讨论】:

  • 需要的/s修改为not available in JavaScript
  • 我修复了您帖子的格式,以便我们可以看到您使用的实际正则表达式,并且我禁用了该部分的语法突出显示以减少混淆。我不知道你为什么在左尖括号 (\&lt;) 之前有反斜杠,但它们没有做任何有用的事情。

标签: regex


【解决方案1】:

不幸的是,RegExr 依赖于 JS RegExp 实现,它不支持启用您需要的 flag/modifier 的选项。

您正在寻找s (DotAll) 修饰符强制. 以匹配换行符序列。

如果您使用的是 JavaScript,则可以使用此解决方法:

/<!-- OPTIONAL -->([\S\s]*?)<!-- OPTIONAL END -->/

【讨论】:

  • 谢谢,这似乎与我想要的完全相反,即删除中间的文本。有没有办法可以反转正则表达式?顺便说一句,很棒的网站。
  • 只需将捕获组放置在您想要的周围。 (&lt;!-- OPTIONAL --&gt;).*?(&lt;!-- OPTIONAL END --&gt;)
  • 哇,太好了。谢谢@hwnd
  • 怎么可能获取just介于两者之间的内容?我想保留标识符(可选和可选结尾)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 2014-04-27
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
相关资源
最近更新 更多