用于替换两个单词之间的所有内容和新行的正则表达式

RegEx for replacing everthing and new lines in between two words

我正在寻找一个 javascript 正则表达式来删除两个单词之间的所有行,包括单词。我可以找到这样的东西

Dim input = "one two three four START four five four five six END seven"
Dim output = Regex.Replace(input, "(?<=START.*)four(?=.*END)", "test")

这是针对 VB 的,此外,它不适用于多行并且还会删除开头和结尾。

如何解决这个问题?

This expression 可以捕获 startend 之间不需要的文本,包括新行:

START([\s\S]*)END

正则表达式描述图

此图将表达式可视化,如果需要,您可以在此 link 中测试其他表达式:

基本性能测试

此 JavaScript 片段 returns 运行 100 万次 for 循环以提高性能。您可以简单地删除 for,这可能就是您要查找的内容:

const repeat = 1000000;
const start = Date.now();

for (var i = repeat; i >= 0; i--) {
 const string = 'anything you wish before START four five four \n \n \n \n five six END anything you wish after';
 const regex = /(.*START)([\s\S]*)(.*END)/gm;
 var match = string.replace(regex, " ");
}

const end = Date.now() - start;
console.log("YAAAY! \"" + match + "\" is a match  ");
console.log(end / 1000 + " is the runtime of " + repeat + " times benchmark test.  ");

编辑

如果您希望用新行替换字符串中的一个词,this expression 可能会有所帮助: