Ich habe eine Zeichenfolge, die eine Python-Stack-Trace wie diese, die (mit einigen irrelevant Text vorher und nachher):mehrzeilige RegEx: letzte Vorkommen entsprechen nur
Traceback (most recent call last):
File "/workspace/r111.py", line 232, in test_assess
exec(code)
File "a111.py", line 17, in
def reset(self):
File "/workspace/r111.py", line 123, in failed
raise AssertionError(msg)
AssertionError: Dein Programm funktioniert nicht. Python sagt:
Traceback (most recent call last):
File "a111.py", line 6, in
File "/workspace/r111.py", line 111, in runcaptured
exec(c, variables)
File "", line 1, in
ZeroDivisionError: division by zero
Jetzt habe ich die Linie zu extrahieren, in dem der Fehler aufgetreten ist (1
extrahiert aus File "", line 1
) mit einer mehrzeiligen RegEx (in Ruby).
/File ".*", line ([0-9]+)/
funktioniert gut, aber entspricht allen Vorkommen. Ich will nur das Letzte. Das Iterieren über die Übereinstimmungen in der Zielumgebung ist keine gültige Lösung, da ich die Geschäftslogik dort nicht ändern kann.
's Versuchen [/ (m:. *) (- m) " *" Datei, Zeile ([0-9] +)/1]'. –
@ WiktorStribiżew schöne, sollten Sie es als Antwort mit einer kurzen Erklärung von '(? M)' und '(? -m)'. – Stefan
Bitte fügen Sie _solved_ nicht an den Titel an oder fügen Sie keine Änderungen hinzu, um Lösungen zu Ihrer Frage hinzuzufügen. Sobald Sie Ihre Antwort akzeptiert haben, werden andere wissen, dass dies gelöst ist. – Bugs