Ich habe folgende regexp, die auswertet nie und hängt unendlich:Regexp verursacht unendlich hängen
import java.util.regex.Matcher
String AUTOGENERATED_HEADER = "#-=-=-= AUTOGENERATED HEADER =-=-=-"
String AUTOGENERATED_FOOTER = "#-=-=-= AUTOGENERATED FOOTER =-=-=-"
String messages = '''#-=-=-= AUTOGENERATED HEADER =-=-=-
a=b
c=d
x=y
#-=-=-= AUTOGENERATED FOOTER =-=-=-
'''
Matcher matcher = messages =~ /${AUTOGENERATED_HEADER}[\r\n]+((.*[\r\n]*)*)${AUTOGENERATED_FOOTER}/
matcher.find()
Das Problem mit einem Teil ist (.*[\r\n]*)
. Wenn ich es zu (.*[\r\n]+)
ändere, funktioniert es.
Sie können mit Regexp here experimentieren. Kann mir jemand erklären, wie es möglich ist?
Zu einfach zu diagnostizieren: katastrophale Backtracking. Siehe [demo] (https://regex101.com/r/tK7tX5/1) –