簡體   English   中英

正則表達式跨多個匹配項

[英]RegEx across multiple lines with multiple matches

我試圖擺脫這個問題,但是即使瀏覽了整個論壇也沒有結果。

我需要得到一個數組,在“ aa”和“ bb”之間, 甚至是跨行,都包含所有組的多個匹配項(在我的情況下為VBA)。 因此,在此示例中,我期望有3個匹配項,但它不起作用

aa xxx bb aa xug bb
aa xxx bb aa xug bb
aa ubu 
bb

使用這種模式:

(aa).*(bb)  /g

我只得到前兩個比賽,但沒有最后一個(跨線)。

使用這種模式:

(aa).*(bb)  /gs

我只有一場比賽

使用這種模式:

(aa)[\s\S]*(bb)  /g

我只有一場比賽

然后,如何獲得我想要的所有3個匹配項?

如果在行級別保持第一個到最后一個,並且如果需要,匹配項可以跨越行,
正則表達式是這樣的:

aa.*bb|aa.*(?:\\r?\\n.*)*?(?<=bb)

https://regex101.com/r/tf7H6H/1

展開式

    aa .* bb
 |  
    aa .* 
    (?: \r? \n .* )*?
    (?<= bb )

這將匹配3次:

/^(aa).*?(bb)$/gms

觀看演示

這將匹配5次:

/(aa).*?(bb)/gs

觀看演示

關鍵是惰性量詞*? ,另請參閱https://www.rexegg.com/regex-quantifiers.html#lazy

暫無
暫無

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

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