gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 04:44:25 24 4
gpt4 key购买 nike

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

示例文本:

<小时/>

我的模式之前有很多文本。

也许有几行...

...然后[这里是我的模式]。然后也许会再次[我的模式]并结束一些更多的文字。

<小时/>

case 的模式是以“000”开头的任何内容。后跟任意多个字母数字字符(空格除外)。因此,例如,有效 token 将是:

  • 000.a
  • 000.1a
  • 000.SomeLongWordHere!123

首先,我开始匹配模式本身,我成功地使用 /000\.[^ ]+/g 进行匹配。然后我尝试用 /(?!000\.[^ ]+)/g 及其变体来否定这一点,在之前、之前和之后添加诸如 .+ 之类的东西之后,但没有一个能满足我的需要。

我研究了有关正则表达式的其他几个问题(例如 thisthis ),但不太幸运(或者不太明白如何将答案应用于我的需求)。

我正在使用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

关于Javascript正则表达式匹配特定模式之前和之后的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43507260/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com