Micha: Geschwindigkeitsproblem durch regulären Ausdruck?

Beitrag lesen

Guten morgen globe,

das {2,2} müsste man auch durch {2} repräsentieren können.

Ja, es war in Deinem letzten Posting ein kleiner Klammernfehler drin. Da habe ich ein wenig rum probiert und bin auf die min,max-Methode gekommen.

Dein Code funktioniert, vielen Dank!

Dadurch bekämst du ein String Array, mit welchem sich auch wunderbar weiterarbeiten ließe...

Das Programm, welches die Daten verarbeitet, kommt von mir. Ich wollte dabei "maximale" Flexibilität erreichen. Eine Zeile soll nicht auf ein Trenner festgelegt werden, drum habe ich auch "beliebiges Zeichen" gewählt.

Eine Verständnisfrage habe ich auch: Warum muß ich am Ende ein (.*) anfügen?

Die Antwort kam in Deinem Code:

i <= m.groupCount();
---^

Ich war die ganze Zeit auf ein kleiner aus. Wenn ich hinten nun noch eine Gruppe definiert habe, kam ich so an den "letzten" Wert ran, den ich suchte. Anfänger pech ;-)

Ich sehe da Leerzeichen (respektive irgendwelche Spaces).

Es können auch Kommas, Semikolons oder Klammern oder ?!? sein. Den Bereich kann man aber sinnvoll eingrenzen, ja - vielleicht so:
[\\[\\]\\(\\),;\\s\\|#]+. Der Punkt ist nur so verdammt übersichtlich ;-)

* Sind die ersten beiden Werte immer Ganzzahlen? Warum scannst du dann nicht auch danach?

Es sind Zeichenketten, die nur in meinem wohl eher schlecht gewählten Beispiel zufällig Ziffern sind. Eine Zeile ist eine Streckenmessung:

<PunktnummerStandpunkt><PunktnummerZielpunkt><HöheStd.pkt><HöheZielpkt><SchrägStrecke><(opt)Standardabweichung>

Die Punktnummer kann ich auf ([0-9A-Za-z-_]+) begrenzen.

* Floats müssen keinen Punkt haben. Der RegExp kann das berücksichtigen: ((-?\d+(\.\d+)?)\s+){3,4}

Ein sehr guter Hinweis, werde ich berücksichtigen!

Darf ich fragen, warum Du am Ende des Ausdrucks noch ein ? gestezt hast?

Mit freundlichem Gruß
Micha