# Regular Expression



## upsala (14. Mrz 2012)

Hallo,

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


```
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... (14. Mrz 2012)

Wenn generell keine Whitespaces enthalten sein dürfen, dann z.B. so:

```
Mess\S*?Wert=(\d+)
```
(...wobei in Java die Backslashes noch maskiert werden müssen)


----------



## upsala (14. Mrz 2012)

Doch, es darf alles enthalten sein, außer Leerzeilen halt...


----------



## Michael... (15. Mrz 2012)

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 (16. Mrz 2012)

Der Input schaut so ähnlich aus: (Also eine Überschrift und dann eine Liste von Messwerten)

```
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:

```
(?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... (16. Mrz 2012)

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.


----------

