2016-07-29 9 views
-1

gulpを見つけて置き換えてください。正規表現を検索してgulp/nodeに置き換え、置換の中のfindの文字列の一部を使用しますか?

私は(何も何も、そのない 'ANYTHING' の文字列を指定できます)以下、この文字列を検索する必要がある:

{% id_ANYTHING %} 

をそして、これに置き換える:

{% block ANYTHING %}{% endblock %} 

例1。これにより

{% id_page %} 

{% block page %}{% endblock %} 

例2

はこれを交換してください。これにより

{% id_whatever %} 

がこれを置き換え

{% block whatever %}{% endblock %} 

アイブ氏は、私は試合を見つける必要がある正規表現を見つけました。私はすでに同様のしかし簡単なタスクのためにgulp-replaceを使用していますので、Iveはこれを使用し始めましたが、私はreplaceで使用できるように 'anything'値を取得する方法はわかりません。

https://github.com/lazd/gulp-replace

replace = function() { 
    return gulp.src('before.html') 
    .pipe(replace({ 
     patterns: 
     [{ 
      match: /{% id_.{2,99} %}/g, 
      replacement: '{% block page %}{% endblock %}' 
     }] 
    })) 
    .pipe(gulp.dest('after.html')); 
}, 

私はガルプまたはノードでこれを行うために探しべきか?あなたはString.prototype.replace()

のためだけにすることができますように、置換値のための機能を使用することができますgulp-replaceのためのドキュメント毎の

答えて

0

また、私は()を使用して一緒にグループに.{2,99}をあなたの正規表現を変更しました。 String.replace()コールバック関数は、各グループを別々の引数として分割します。あなたはそのグループを抽出することに興味があるだけなので、String.replace()はすべての作業を行い、一致したテキストを置き換える値を返すことができます。

const gulp = require('gulp') 
const replace = require('gulp-replace'); 
const path = require('path'); 
let pattern = new RegExp(/{% id_(.{2,99}) %}/, 'g'); 

gulp.task('replace',() => { 
    return gulp.src('before.html') 
    .pipe(replace(pattern, (match, p1) => { 
     return `{% block ${p1} %} {% endblock %}`; 
    })) 
    .pipe(gulp.dest(path.join(__dirname, 'after.html'))); 
}); 
+0

これは、次のようにします。let pattern = new RegExp(/ {%id _(。{2,99})%} /、 'g'); 実際はこれでしょうか?let pattern = new RegExp( '{%id _(。{2,99})%}'、 'g'); https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions – Evans

+0

@Evans彼らは互換性があります。式のまわりで '' ''を使うと、式のまわりに '//'は必要ありません。 RegExpに渡すときに '//'を実際のリテラルとして使うことができます。 [ここをクリック](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp#Description)。しかし、あなたの式のまわりで ''''を使うと文字列のエスケープ規則に従う必要があります。文字列表記では '/'を使ってそれを心配する必要はありません。 – peteb

関連する問題