簡體   English   中英

正則表達式捕獲組只捕獲最后一次出現

[英]Regex capturing group only capturing last occurence

這是我的輸入:

start

        @var=somevar1
        @var=somevar2

end

我正在使用這個正則表達式

start(?:\s*\n*(?:@var=(.*)\s*)*)\s*\n*end

它應該給出輸出為

somevar1
somevar2

但它只給 somevar2。

有沒有辦法獲得所有出現的捕獲組?

一種選擇是使用帶有 inifite 量詞的正向后視來斷言 start 后跟左側的換行符。

請參閱對lookbehinds支持

(?<=^start\n[^]*@var=)\S+(?=[^]*\nend$)

正則表達式演示

 const regex = /(?<=^start\\n[^]*@var=)\\S+(?=[^]*\\nend$)/gm; const str = `start @var=somevar1 @var=somevar2 end`; let m; console.log(str.match(regex));

如果前后只能有@var=somevar 格式而不是其他內容:

(?<=^start\n\s*(?:@var=\S+\s+)*@var=)\S+(?=(?:\s*@var=\S+)*\s*\nend$)

查看另一個正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM