[英]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.