# Regex Ausnahmen/Bedingungen



## Midnight (17. Mai 2012)

Hallo,

mache gerade meine ersten Schritte mit Regulären Ausdrücken und komme leider bei meinem Vorhaben nicht weiter. Hier erstmal ein Beispieltext:

"Die Koordinaten lauten 13:214:2, welche am 02.02.2012 um 15:12:21 Uhr ermittelt wurden"

Es geht darum, dass ich Koordinaten erkennen lassen möchte. Diese Koordinaten sind maximal 3 stellig und getrennt mit einem Doppelpunkt. Das funktioniert im moment auch ganz gut mit:

(\d{1,3})\d{1,3})\d{1,3})

Nun habe ich aber das Problem, dass in dem Text, wo diese Koordinaten stehen, auch eine Uhrzeit steht. Dummerweise hat diese auch das gleiche Format (hh:mm:ss) und wird somit auch erkannt. Meine Idee war, die Wörter "um" und "Uhr" die davor und dahinter stehen als Möglichkeit zu nutzen, damit diese von der Erkennung ausgeschlossen werden können. Ist das überhaupt möglich? Hatte bisher keinen Erfolg.

LG


----------



## Cola_Colin (17. Mai 2012)

Sowas-ungetestet- wie


```
(\d{1,3}):(\d{1,3}):(\d{1,3})(?! Uhr)
```

siehe:
Regex Tutorial - Lookahead and Lookbehind Zero-Width Assertions

Oder du nimmst einfach den ersten Treffer, wenn der Satzaufbau immer gleich ist.


----------



## Midnight (17. Mai 2012)

Danke für die Hilfe. Damit würde es zumindest für den oben genannten Satz funktionieren.

Leider kann ich nicht sicherstellen, dass der Satz immer so aufgebaut ist. Ich habe mir das Tutorial mal angeschaut, aber ich verstehe das mit dem Lookahead nicht ganz. Also mit "Uhr" funktioniert das ja jetzt gut und das entspricht doch dem Negative Lookbehind? Nun habe ich probiert das mal umzudrehen, also das "um" vor der Uhrzeit als Erkennung zu nehmen, aber das klappt wiederrum nicht.

```
(?!um )(\d{1,3}):(\d{1,3}):(\d{1,3})
```
Er erkennt es trotzdem, obwohl "um" im Text davor steht.


----------



## Cola_Colin (17. Mai 2012)

(?!um) ist auch ein lookbehind, schau mal auf dem Link, da wird auch der lookahead erklärt.


----------



## Midnight (17. Mai 2012)

Ich muss gerade feststellen, dass Javascript kein Lookbehind unterstützt. Insofern fällt die ganze Sache ins Wasser, es sei denn es gibt eine alternative...


----------



## Cola_Colin (17. Mai 2012)

Java ohne script


----------

