【问题标题】:Regex | Find content between 2 dynamic strings正则表达式 |在 2 个动态字符串之间查找内容
【发布时间】:2018-03-23 16:49:10
【问题描述】:

我目前正在开发一个 gulp 插件,它可以找到像 [! @if (this) !][! @endif !] 这样的语法但是,这是动态的,并且 if 总是可以改变。

我希望能够做一些正则表达式,以便能够在文件的内容中搜索 if 语句并获取中间的内容,以便我可以选择是否删除基于内容的内容在使用命令传递的标志上,例如 gulp --statements false 将不允许语句显示,无论它们实际上是什么,因为这对于开发目的无关紧要。

所以我可以有这样的代码......

This is just some dummy data that will not get removed.

[! @if (this_is_some_var) !]
   I would be able to get this text!
[! @endif !]

This is some more dummy data that will not get removed.

[! @if (this_is_another_var) !]
    And this text!
[! @endif !]

所以基本上我希望 Javascript/RegEx 能够返回以下 I would be able to get this text!,然后根据传入的参数使用 Javascript 删除或保留该内容。

【问题讨论】:

  • 也许这个正则表达式对你有帮助:) \[! @if \((?<var>\w+)\) !\]\s?(?<content>(?s:.+))\[! @endif !\] regex101.com/r/QGocEE/3

标签: javascript regex gulp


【解决方案1】:

这可能是您可以使用的起点。

\[\!(?!\!\]).+\!\]\s((?!\[\!).+)\s\[\!(?!\!\]).+\!\]

https://regex101.com/r/kz6K6i/1

【讨论】:

    【解决方案2】:

    你可以用这个

    /(?:^\[!\s@if\s\(.*\)\s!\])\s+(.*)\s+(?:\[!\s@endif\s!\]$)/gium;

    demo & regex playground

    【讨论】:

      【解决方案3】:

      这可能适用于您的情况

      \[! @if \((.*)\) !\]\s+(.*)(?=\s+\[! @endif !\])
      

      Demo

      • 捕获 1:每个 If 语句变量
      • 捕获 2:If 语句的内容字符串

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-28
        • 2012-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多