Ich habe einen möglicherweise großen Textblock nach Instanzen von [[...]]
zu suchen, wo die ...
alles sein kann, einschließlich anderer Klammern (obwohl sie nicht geschachtelt werden können; die erste Instanz von ]]
nach [[
endet die Übereinstimmung).Ist es besser, einen nicht gierigen Qualifier oder Lookahead zu verwenden?
Ich kann von zwei Möglichkeiten denken, diesen Text entsprechen:
- eine nicht gierige Qualifier Verwendung:
/\[\[.+?\]\]/
- ein Look-Ahead-Verwendung:
/\[\[(?:(?!\]\]).)+\]\]/
Ist eine Wahl von Natur aus besser als die andere, vom Standpunkt der Leistung (ich würde sagen, das erste ist wahrscheinlich lesbarer)? Ich erinnere mich, gelesen zu haben, dass es besser ist, nicht-gierige Qualifier zu verwenden, aber ich kann keine Quelle dafür finden.
Vielleicht war die Warnung, weil nicht gieriges Matching eine Menge Rückverfolgung verursachen kann. –
Ja. Der Kontext war anders, es war ein Argument für die Verwendung einer bestimmten negierten Zeichenklasse anstelle von ". *?". –