我用遞歸Perl的正則REG-表達式來掃描嵌套singlechar括號:的Perl的正則表達式multichar嵌套支架
$RE = qr'(?:[\(]((?:(?>[^\(\)]+)|(??{$RE}))*)[\)])';
這讓我掃描C函數的調用,這樣的:
"func (a(b()))" ~= /$RE/
匹配「(a(b()))」。現在,我想解析帕斯卡爾風格嵌套[如果,如果端]括號,即:
if (a) then
if (b) then
blaif := 1;
else
blaend := 2;
end if;
end if;
我試圖$ RE重寫從上面到:
$RE_if = qr'(?:(?:if)((?:(?>(?!(?:\bif\b|\bend\s+if))+)|(??{$RE_if}))*)\
(?:\bend\s+if))';
但kindof行不通。有人有正則表達式處理multichar括號 like [「if」,「end if」]?
- 問候康拉德
'(?!...)+'沒有任何意義。如果'(?!(?:\ bif \ b | \ bend \ s + if))+'be'(?:(!!\ bif \ b | \ bend \ s + if)。 – ikegami