Regular Expression

upsala

Mitglied
Hallo,

ich hab hier einen regulären Ausdruck, der ca. so aussieht:

Code:
Mess.*?Wert=(\d+)

Jetzt möchte ich aber nur matchen wenn zwischen 'Mess' und 'Wert' keine Leerzeile ist (also kein \n\n).

Ist das mit java.util.regex.Pattern möglich?
 

Michael...

Top Contributor
Wenn generell keine Whitespaces enthalten sein dürfen, dann z.B. so:
Code:
Mess\S*?Wert=(\d+)
(...wobei in Java die Backslashes noch maskiert werden müssen)
 

Michael...

Top Contributor
Sorry, hatte Leerzeichen statt Leerzeilen gelesen.

Kann man die Position der leeren Zeile genauer eingrenzen bzw. kennt man Zeichen unmittelbar davor oder danach? Oder wie schaut der Input aus der geparst werden soll?
 

upsala

Mitglied
Der Input schaut so ähnlich aus: (Also eine Überschrift und dann eine Liste von Messwerten)
Code:
Erste Messung
Strom = 1,32
Spannung = 12,7

Noch eine Messung
Drehzahl = 333,2; Strom = 0,31
Irgendwas = -0,2

...

Also schaut eine RegEx im Moment z.B. so aus:
Code:
(?s)Erste Messung.{0,30}Strom =\s+(-?[0-9,]+)

Sicherer würde ich mich allerdings fühlen, wenn ich die Leerzeilen berücksichtigen könnte. Aber ich befürchte, daß sich dies über RegEx alleine nicht lösen lassen wird.
 

Michael...

Top Contributor
In dem Fall wäre es vielleicht günstiger das ganze beim Einlesen oder danach per split an den Leerzeilen aufzuteilen und die Einzelstrings dann per Regex zu analysieren.
 

Ähnliche Java Themen

Neue Themen


Oben