`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 - это то, что выводится. Обратите внимание, что <li>То, что я ввел в Sublime Text, удаляется, а остальные нет.

<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 ответа

Решение

Еще один регулярный ответ:

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

Ссылка

Ты не пройдешь tag в replace функция, replace можно вызвать с помощью строки или регулярного выражения.

Чтобы соответствовать всем li теги, которые вы можете попробовать использовать это regex:

.pipe(replace(/\<li.+li\>/g, '')
Другие вопросы по тегам