Javascript 正则表达式find并替换为gulp/node,并使用find的一部分';替换中的字符串是什么?
我正在执行一个查找并替换为吞咽 我需要在下面找到这个字符串(任何东西都可以是任何东西,而不是“任何东西”的字符串): 并将其替换为:Javascript 正则表达式find并替换为gulp/node,并使用find的一部分';替换中的字符串是什么?,javascript,node.js,gulp,Javascript,Node.js,Gulp,我正在执行一个查找并替换为吞咽 我需要在下面找到这个字符串(任何东西都可以是任何东西,而不是“任何东西”的字符串): 并将其替换为: {% block ANYTHING %}{% endblock %} {% block page %}{% endblock %} {% block whatever %}{% endblock %} 示例1. 替换此项: {% id_page %} {% id_whatever %} 为此: {% block ANYTHING %}{% endbloc
{% block ANYTHING %}{% endblock %}
{% block page %}{% endblock %}
{% block whatever %}{% endblock %}
示例1.
替换此项:
{% id_page %}
{% id_whatever %}
为此:
{% block ANYTHING %}{% endblock %}
{% block page %}{% endblock %}
{% block whatever %}{% endblock %}
示例2.
替换此项:
{% id_page %}
{% id_whatever %}
为此:
{% block ANYTHING %}{% endblock %}
{% block page %}{% endblock %}
{% block whatever %}{% endblock %}
我找到了我需要找到匹配项的正则表达式。我已经在使用gulp replace来完成一个类似但更简单的任务,所以我开始使用它来完成这个任务,但我不确定如何获取“anywhere”值,以便在替换中使用它
我应该用吞咽法还是淋巴结法 根据文档,您可以使用替换值函数,就像您可以使用
此外,我还修改了您的正则表达式,使用()
将{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')));
});
应该是这样的:let pattern=newregexp(/{%id_U8;(.{2,99})%}/,'g');事实上是这样的吗?:let pattern=newregexp('{%id_u399;(.{2,99})%}','g')@埃文斯:它们可以互换。如果在表达式周围使用
'
,则不需要在表达式周围使用/
。但是,当您将/
传递给RegExp时,可以将其作为实际文本使用。不过要注意的是,如果在表达式周围使用'
,您仍然需要遵循字符串的转义规则,而使用/
的文字表示法则不需要担心这一点。