`gulp-replace`只是替换了一些但并非全部的目标

时间:2016-04-08 21:39:36

标签: javascript replace gulp gulp-replace

gulp-replace并未取代应有的一切。

我正在尝试替换<li>,并且只删除其中的一部分。当我添加一个列表项时,它已成功删除,但原始文档中的那些不是。如果我将<li>复制/粘贴到新文件中,则情况确实如此。

test.html 是源文档。

<h2>Copied from source:</h2>
<ul>
    <li class="Bullets">Athletics</li>
    <li class="Bullets">Burglary</li>
</ul>

<h2>Entered in Sublime Text 2</h2>
<ul>
    <li>Lorem ipsum dolor sit amet.</li>
    <li>Eos ipsam in dolorum odio!</li>
    <li>Illum asperiores eligendi, iure tempora.</li>
    <li>Reprehenderit blanditiis repudiandae ex eligendi.</li>
</ul>

test.md 是输出的内容。请注意,我在Sublime Text中输入的<li>被删除了,但其他的则没有。

<h2>Copied from source:</h2>
<ul>
    <li class="Bullets">Athletics</li>
    <li class="Bullets">Burglary</li>
</ul>

<h2>Entered in Sublime Text 2</h2>
<ul>
    Lorem ipsum dolor sit amet.</li>
    Eos ipsam in dolorum odio!</li>
    Illum asperiores eligendi, iure tempora.</li>
    Reprehenderit blanditiis repudiandae ex eligendi.</li>
</ul>

gulpfile.js

(function () {

  'use strict';

  var gulp = require('gulp');
  var replace = require('gulp-replace');
  var dest = require('gulp-dest');

  gulp.task('replace', function(){
    gulp.src(['source/*.html'])
      .pipe(replace('<li>',''))
      .pipe(dest('dest', {ext: '.md'}))
      .pipe(gulp.dest('./'));
  });

})();

任何帮助表示赞赏!谢谢!

2 个答案:

答案 0 :(得分:1)

另一个正则表达式的答案:

.pipe(replace(/<\s*li[^>]*>(.*?)<\s*\/\s*li>/g, '$1')

Reference

答案 1 :(得分:0)

您无法在tag函数中传递replace,可以使用字符串正则表达式调用replace

要匹配所有li代码,您可以尝试使用此regex

.pipe(replace(/\<li.+li\>/g, '')