[英]Javascript RegEx to match everything up until and after a specific pattern
我需要一个正则表达式来匹配字符串中的所有内容,除了给定模式的子字符串,它可能会出现几次。
在我的模式之前有很多文字。
也许有几行......
...然后[ 我的模式在这里 ]。 然后可能[ 我的模式在这里 ]再次和更多的文本结束。
案例中的模式是以“000”开头的。 然后是除了空格之外的许多字母数字字符。 因此,例如,有效令牌将是:
首先,我开始匹配模式本身,我设法使用/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.