Possiedo un blocco di testo possibilmente grande per cercare istanze di [[...]]
, dove lo ...
può essere qualsiasi cosa, incluse altre parentesi (sebbene non possano essere nidificate; la prima istanza di ]]
dopo [[
termina la corrispondenza).È meglio usare un qualificatore non avido o un lookahead?
Mi vengono in mente due modi per abbinare questo testo:
- Utilizzando un qualificatore non avido:
/\[\[.+?\]\]/
- Utilizzando un lookahead:
/\[\[(?:(?!\]\]).)+\]\]/
È uno scelta intrinsecamente migliore rispetto al altro, dal punto di vista delle prestazioni (direi che il primo è probabilmente più leggibile)? Ricordo di aver letto che è meglio non usare qualificatori non golosi, ma non riesco a trovare una fonte per questo ora.
Forse l'avviso era perché la corrispondenza non avida può causare molto back-tracking. –
Sì. Il contesto era diverso, era un argomento per l'utilizzo di una specifica classe di caratteri negati invece di '. *?' –