- Offizieller Beitrag
Ich habe mir dazu die folgende Lösung erstellt: https://regex101.com/r/4AxTjS/3
Aber warum wird die 2.te Zeile des ersten Kommentarblocks nicht erkannt?
Ich habe mir dazu die folgende Lösung erstellt: https://regex101.com/r/4AxTjS/3
Aber warum wird die 2.te Zeile des ersten Kommentarblocks nicht erkannt?
Weil dein ce an der falschen Stelle steht: https://regex101.com/r/4AxTjS/4
In deinem Skript muss ein Kommentblock nicht mit #ce enden - er kann stattdessen auch mit was anderem enden.
Weil dein ce an der falschen Stelle steht:
Danke dir.
Ein Nachtrag:
Es funktioniert zwar (in dem kleinen Musterbeispiel). Aber auf eine größere Datei losgelassen verweigert die Engine auf regex101.com etwa nach 100 Zeilen den Dienst (> 1.000.000 Steps!).
Catastrophic backtracking has been detected and the execution of your expression has been halted. To find out more what this is, please read the following article: Runaway Regular Expressions
OK, das ist dann tatsächlich etwas heftig. Vielleicht läßt sich das Pattern noch besser designen. Kann aber sein, dass für diese Aufgabe ein komplexes RegEx nicht das Mittel der Wahl ist. Dann doch lieber zeilenweise iterieren.
Probier mal in den Einstellungen links (der Schraubenschlüssel) die max. Execution Time von 2s höher zu schrauben. Vielleicht hilfts?
Ich hatte das mal so umgesetzt - geht das eventuell besser?:
geht das eventuell besser?:
Ah, fein. Das Pattern benötigt im Schnitt 26.000 Schritte je Match. Gegenüber meiner Million mal eine deutliche Verbesserung.
Die Catastrophic Backtracking tauchen immer dann auf wenn in sich verschachtelte Konstrukte mit variablen Quantifizierern existieren welche jeweils für sich die gleichen Inhalte matchen können. Das führt dann dazu, dass der alle möglichen Kombinationen zwischen den beiden Quantifizierern durchgeht wenn kein Match existiert. Also eine Art Kreuzprodukt und das führt dann dazu dass das sich ziemlich fix hochschaukelt.