Eine Frage an die Regex Experten.

Folgende GDT lese ich aus.

|Venöse Kapazität [ml/100ml] | 5.2 | 5.0 |

|Venöser Abstrom [ml/100ml/min] | 70.0 | 58.5 |

|Arterieller Einstrom [ml/100ml/min]| 5.3 | 4.1 |

 

$[regex \|\Venöse\sKapazität\s\[ml\/100ml\]\s+\|\s+([0-9.]+)\s+\|\s+[0-9.]+ x TXT 1 _ inf NN NNNN NNNN _ K 0]$

liefert als Ergebnis die Venöse Kapazität 5.2

aber auch

$[regex \|\Arterieller\sEinstrom\s\[ml\/100ml\/min]|\s+([0-9.]+)\s+\|\s+[0-9.]+ x TXT 1 _ inf NN NNNN NNNN _ K 0]$

liefert das gleiche Ergebnis, sollte aber den Arteriellen Einstrom mit dem Ergebnis 5.3 liefern.

Die Zuordnung für venöse Kapzität und Einstrom funktionieren.

Im Regex Tester klappt es aber.

\|\Arterieller\sEinstrom\s\[ml\/100ml\/min]|\s+([0-9.]+)\s+\|\s+[0-9.]+

liefert bei 

|Arterieller Einstrom [ml/100ml/min]|     5.3     |      4.1    |

5.3   als Ergebnis

Hat jemand eine Idee, woran das liegt, dass Tomedo da Fehler macht?

 

Wenn man die erste Zeile mit der venösen Kapzität löscht, wird der venöse Abstrom im Ergebnis für den arteriellen Einstrom ausgeworfen.

 

Gefragt in Frage von (30.7k Punkte)
0 Punkte

1 Antwort

Versuchen Sie mal
\|Arterieller\sEinstrom\s\[ml\/100ml\/min\]\|\s+([0-9.]+)\s+\|\s+[0-9.]+
statt
\|\Arterieller\sEinstrom\s\[ml\/100ml\/min]|\s+([0-9.]+)\s+\|\s+[0-9.]+

Bei Ihnen wurde das nicht escapete "|" als ODER interpretiert.
Bei https://regex101.com/ hat Ihre Variante auch 5.2 als erstes group-Match geliefert, wenn der ganze Datei-Inhalt als Test-String genommen wurde ...

Beantwortet von (21.9k Punkte)
0 Punkte
Vielen Dank Herr Bürger,

das war´s

Bei den übrigen Einträgen hat es funktioniert, da habe ich es ja auch richtig gemacht.

Mit dem "\" soll die Pipe "|" ignoriert werden.

Im Regex Tester hat das funktioniert, nur wenn noch andere Werte in der GDT Datei stehen hat er immer die erste Zeile ausgewertet. Warum da überhaupt ein Wert ausgegeben wird, ist mir schleierhaft.

Regex ist verdammt schwer und gemein
16,089 Beiträge
23,865 Antworten
42,005 Kommentare
11,700 Nutzer