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