【问题标题】:Change file name with regular expression使用正则表达式更改文件名
【发布时间】:2014-06-16 12:49:02
【问题描述】:

我对正则表达式一无所知。

如何使用正则表达式更改文件名

我想将文件名从 'style-dist.css' 更改为 style.css

【问题讨论】:

  • 为什么要使用正则表达式?而是可以直接用 string.Replace 方法替换。
  • 它是 gruntfile.js 副本的一部分 - 我想复制一个文件但更改文件名

标签: regex gruntjs


【解决方案1】:

如果您可以在尝试匹配/更改的字符串中找到模式,则正则表达式可以工作。例如,在这里您只给出了一个字符串。我假设您正在尝试从中删除“-dist”部分?如果还有其他模式,请在您的问题中说明。

可以这样做

new_name = old_name.replace(/-dist/, '');

但是,如果您不了解正则表达式,并且有一些时间,我建议您将脚弄湿。尽你所能地。以下是一些介绍性文章:

http://gnosis.cx/publish/programming/regular_expressions.html

http://www.javascriptkit.com/javatutors/re.shtml

这是一本更完整的书(在线): http://regex.learncodethehardway.org/book/

【讨论】:

    【解决方案2】:

    如果使用 grunt,则需要在 gruntfile 中使用 rename 属性。

    您可以在building file objects dynamically 上的 grunt 文档中找到更多信息。

    你可以设置你的 gruntfile 看起来像这样。

    • 请注意,您必须将其纳入您的设置中,以便所有内容都对齐/等等。
    • 请注意,这里没有其他防护措施...没有错误检查等。
    • 请注意,您需要计算出 src 和 dest 位置的全局变量
    • 请注意,如果您使用多个 regex 模式执行此操作,或者您的 globbing 模式变得非常复杂,这很快就会变成一场噩梦,并且可能会找到其他方法来执行此操作。

    代码:

    copy: {
        main: {
          files: [
            {
              expand: true, 
              cwd: '<whatever your cwd is>', 
              src: ['<glob for your -dist.js file location>'], 
              dest: '<glob for a PATH..a PATH>', 
              rename: function(dest, src) {    
                // receives the dest PATH and src and then
                // takes the dest path, appends the modified src using the regex
                return dest + src.replace(/-dist/, '');
             }
           }
    

    【讨论】:

      猜你喜欢
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 2011-09-14
      • 2017-08-10
      • 2018-10-19
      相关资源
      最近更新 更多