正则表达式在grunt版本中

时间:2017-04-15 15:07:09

标签: regex wordpress gruntjs versioning

我试图使用grunt-version来破坏我的PHP WordPress插件项目的版本。很长一段时间我都尝试过,但都失败了。

在我的插件文件example.php中,我有一个表示项目版本的PHP变量:

public $version = '0.3.4';

我需要匹配字符串,以便我也可以在这里碰撞版本。

我试过了:

prefix: 'public\s\$version\s='

从regex101.com开始,它完全匹配字符串。版本号部分完全由grunt插件处理。

但是grunt version::patch说:

  

文件中找不到图案
  路径:example.php
  模式:/(publics$versions=s)([0-9a-zA-Z\-_\+\.]+)/g

所以我将模式修改为:

prefix: 'public/\s\$version/\s=/\s'

但它没有匹配:

  

模式:/(public\/s$version\/s=\/s)([0-9a-zA-Z\-_\+\.]+)/g

尽管如此,以下模式在同一个文件中正常工作:

prefix: 'Version:\\s+'

在插件标题中很好地提升版本:

  

版本:0.3.4

所以我试过了:

prefix: 'public \$version =\\s+'

但没有运气:

  

模式:/(public $version =\s+)([0-9a-zA-Z\-_\+\.]+)/g

仅供参考,我的Gruntfile声明如下:

version: {
    pluginVersion: {
        options: {
            prefix: 'Version:\\s+'
        },
        src: [
            'example.php'
        ]
    },
    pluginVariable: {
        options: {
            prefix: 'public \$version =\\s+'
        },
        src: [
            'example.php'
        ]
    },
    packageJson: {
        src: [
            'package.json'
        ]
    }
},

修改

毋庸置疑,默认模式('[^\\-]version[\'"]?\\s*[:=]\\s*[\'"]')也在改变一些不需要的版本。像:

  

public $ wp_version =' 0.3.0';

2 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式来匹配它:public\s?\$version\s?=\s?'

public\\s+\\$version\\s+=\\s+\'转义)

Demo

答案 1 :(得分:0)

对于那些希望与style.css和/或插件文件一起使用的人:

<rewrite>
      <rules>
                  
          <rule name="Sitemap Re-direct" enabled="true" stopProcessing="true">
                <match url="sitemap.xml" />
                <action type="Rewrite" url="sitemap" appendQueryString="false"/>
          </rule>
                                
          <rule name="RewriteToSearch">
                <match url="^search/property.php?id=([0-9]+)" />
                <action type="Rewrite" url="https://search.sourced.co/property/{R:1}/" />
          </rule>
                                
      </rules>
</rewrite>

确保您注册了任务(按照文档)

version: {
   project: {
     options: {
       release: 'patch',
       prefix: '\\s*([^\\w][\'"]?[v|V]{1}ersion[\'"]?\\s*[:=]\\s*[\'"]?)'
     },
     src: ['package.json', 'style.css']
   }
}

然后您可以像这样运行任务

grunt.loadNpmTasks('grunt-version');