`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>

gullfile.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('./'));
  });
})();

感谢您的帮助!非常感谢。

另一个正则表达式答案:

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

参考

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

要匹配所有li标签,您可以尝试使用此regex:

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

相关内容

  • 没有找到相关文章

最新更新