du musst ja nicht gleich den kompletten match aus dem string rauspflücken...
ich kenne die TRegExpr-Klasse nicht, aber in PHP würd ich das ganze so machen:
Quelltext
1:
| preg_match_all('~(\[\w+\].*)\r\n\[~',$ini_content,$matches,PREG_SET_ORDER); |
dann hätte ich in matches ein mehrdimensionales Array, für jede Section ein Eintrag. In $matches[0][0] hätte ich den kompletten Match, in $matches[0][1] nur die Klammer.
Sowas sollte es doch in der TRegExpr auch geben, oder?
dann hätte ich noch nen besseren RegEx:
Quelltext
So würde ich das gleiche Muster suchen, hätte in den Match-Ergebnissen aber direkt Section-Name und die einzelnen Werte getrennt.
Wenn das so nicht funktioniert, nimmst du den ersten RegEx und entfernst nach der suche einfach nur das, was in der Klammer steht, aus dem ursprünglichen String.
Grüße,
Wolle
Edit: Ich weiß nicht, inwieweit das in Delphi implementiert ist, aber ansonsten wären lookarounds noch ne lösung:
Quelltext
1:
| ~(?:\[(\w+)\](.*)\r\n)(?=\[)~ |
Man korrigiere mich, sollte mir ein Fehler unterlaufen sein, RegExp sind nicht grade die einfachste Materie
Edit#2: Das Problem allgemein ist doch, das die letzte Section gar nicht mehr gematcht wird?
würde das gelöst durch:
Quelltext
1:
| ~(?:\[(\w+)\](.*)\r\n)(?=[\[$])~ |
Man beachte den Lookahead
(?=[\[$]) um sowohl ne neue eckige Klammer als auch das Ende des Strings zu matchen.
1405006117752879898543142606244511569936384000000000.