Javascript 正则表达式匹配特定模式之前和之后的所有内容

Javascript RegEx to match everything up until and after a specific pattern

我需要一个正则表达式来匹配字符串中的所有内容,给定模式的子字符串除外,它可能会出现多次。

示例文本:


我的模式前有很多文字。

可能有几行...

...然后[我的模式在这里]。然后也许 [我的模式在这里] 和更多的文本结束。


以防万一的模式是以“000”开头的任何内容。然后是除 space 之外的许多字母数字字符。因此,例如,有效标记为:

首先,我开始匹配模式本身,我设法用 /000\.[^ ]+/ g 匹配。然后我试图用 /(?!000\.[^ ]+)/ g 及其变体来否定它,在之前、之前和之后添加诸如 .+ 之类的东西,但是 none 可以满足我的需要。

我研究了其他几个关于正则表达式的问题(例如 this and ),但运气不佳(或者不太了解如何将答案应用到我的需要)。

我正在使用 regex101.com 进行测试。

使用上面的示例文本,期望的结果是:


我的模式前有很多文字。

可能有几行...

...然后。然后可能会再多一些文字结束。


非常感谢任何帮助。提前致谢!

正如@Doqnach 在评论中提到的那样,您似乎只想做一个 replace

使用正则表达式:

text.replace(/000\.[^ ]+/g, "");

这是一个工作示例:

let text = `A lot of text before my pattern.

Perhaps several lines...

...then 000.SomeLongWordHere!123 Then maybe 000.1a again and some more text to end.`

 // Easiest way
console.log("=== Using Replace ===\n\n");
console.log(text.replace(/000\.[^ ]+/g, ""));


// Using regex exec
console.log("\n\n=== Regex exec ===\n\n");

let regex = /(?:^|(?:000\.[^ ]+))((?:(?!000\.[^ ]+)[\S\s])*)/igm;
let content = "";
while(result = regex.exec(text)){
     //In Group 1 is the content that does not match the desired pattern
     content+= result[1]; 
}
console.log(content);

第二种方法分解在:https://regex101.com/r/nR9tV6/16