Thread Regex Strategie (5 answers)
Opened by MarkusH at 2018-05-21 11:45

clms
 2018-05-22 15:21
#188423 #188423
User since
2010-08-29
373 Artikel
BenutzerIn
[default_avatar]
2018-05-21T16:10:13 Linuxer
Wenn es unbekannte Fehler sind, dann wird es schwieriger.

Das ist nett formuliert.

Es ist unmöglich, Regex zu schreiben, die mit jedem denkbaren Fehler im Input zurecht kommen. (Du kannst Dir Fehlermodelle ausdenken, die für zwei unterschiedliche Fälle von "korrektem" Input den gleichen "falschen" Input erzeugen. Dann muss das Skript in einem der Fälle falsch raten, was gemeint gewesen war.)

In ähnlichen Fällen verwende ich die beiden von Linuxer angedeuteten Strategien:
  • Ausprobieren, schauen, wo die Regex nicht passt, Regex entsprechend modifizieren, dass sie auch für Varianten passt, erneut ausprobieren usw. bis Du eine zufriedenstellende Erfolgsquote hast.
  • versuchen die Qualität Deines Inputs vorab zu prüfen bzw. sicherzustellen.

Ein paar Überleungen, wie Du Dir evtl. die Arbeit erleichtern kannst:
  • was ist schlimmer, wenn Dein Skript die Daten nicht extrahieren kann oder wenn es falsche Daten etrahiert ohne Alarm zuschlagen?
  • gibt es einen (halbwegs) zuverlässigen Plausibilitätscheck, der zumindest feststellen kann, ob das Skript korrekte Daten gelesen hat?
  • sollen die Regex sehr strikt oder eher "relaxt" matchen? Im ersten Fall muss alles 100% passen. Für Varianten brauchst Du dann zusätzlichen Code. Im zweiten Fall enthält die Regex hauptsächlich Wildcards (oder sucht nur nach einem kurzen Schnipsel ohne auf die Umgebung zu arten), d.h. Du wirst wahrscheinlich mehr falsche Treffer bekommen.

Das kannst Du aber alles nur am konkreten Beispiel abwägen.

View full thread Regex Strategie