簡體   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