Algorytm tworzenia n-tego poziomu zagnieżdżonych wzorów w RegEx
Jak wyjaśniono wCzy można używać wyrażeń regularnych do dopasowania zagnieżdżonych wzorów?, nie jest możliwe utworzenie wyrażenia regularnego w celu dopasowania do dowolnego zagnieżdżonego wzorca. Ale czy możliwe jest stworzenie algorytmu, który wygenerowałby regex n-tego poziomu „nesteness”?
w zasadzie chcę zastąpićtrim(whatever)
zrtrim(ltrim(whatever))
udało mi się ręcznie utworzyć 3 poziomy (składnia javascript):
<code>level[1] = /\(([^()]*)\)/g level[2] = /\(((?:[^()]*\([^()]*\))*[^()]*)\)/g level[3] = /\(((?:(?:(?:[^()]*\([^()]*\))*[^()]*)*\((?:(?:[^()]*\([^()]*\))*[^()]*)*\))*[^()]*)\)/g </code>
oto kilka danych testowych:
<code>1st(ddd) + 1st(ddd) 2nd(dd(d)) 3rd(a(b) + (cd(h) + d(dfas) + zzz)) 4th(a(b(c(d)))) 8th(a(b(c(d(e(f(g())))))) </code>
wiem to na każdym poziomie[^()]*
musi zostać zastąpiony przez grupę nieprzechwytującą, która może zawierać nawiasy, ale nie wiem, jak to zrobićuogólnij algorytm dla n-tego poziomu...