繁体   English   中英

Javascript RegEx匹配特定模式之前和之后的所有内容

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

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

示例文字:


在我的模式之前有很多文字。

也许有几行......

...然后[ 我的模式在这里 ]。 然后可能[ 我的模式在这里 ]再次和更多的文本结束。


案例中的模式是以“000”开头的。 然后是除了空格之外的许多字母数字字符。 因此,例如,有效令牌将是:

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

首先,我开始匹配模式本身,我设法使用/000\\.[^ ]+/ g 然后我试图用/(?!000\\.[^ ]+)/ g及其变体来否定它,在...之前,之前和之后添加像.+这样的东西,但是没有一个适用于我需要的东西。

我查看了有关正则表达式的其他几个问题(比如这个这个 ),但不幸运(或者不太明白如何将答案应用于我的需要)。

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

使用上面的示例文本,所需的结果是:


在我的模式之前有很多文字。

也许有几行......

...然后 。 然后可能再次和更多文本结束。


任何帮助是极大的赞赏。 提前致谢!

正如@Doqnach在评论中提到的,似乎你只想做一个替换

使用你的正则表达式:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM