Laden...

Multiline Regex mit unbekannten Zeilenabständen

Erstellt von ByteDevil vor 4 Jahren Letzter Beitrag vor 4 Jahren 1.217 Views
ByteDevil Themenstarter:in
132 Beiträge seit 2013
vor 4 Jahren
Multiline Regex mit unbekannten Zeilenabständen

Hallo,

gegeben sei folgender Test-String:

irgendwas
noch mehr irgendwas
hier können beliebig viele Zeilen sein

Zahl 1 ist "2"

ganz viel irgendwas
hier können beliebig viele Zeilen sein

     Zahl 2 ist "unbekannt" und die Zeile hat n Leerzeichen am Anfang

Als Ausgabe möchte ich "2" und "unbekannt" haben.

Folgender Regex tut leider nicht was er soll:

^\s*Zahl 1 ist "(.+?)"$(?:^.*$)+?^\s*Zahl 2 ist "(.+?)"

Getestet mit regex101
Zahl 1 findet er, wenn ich den Part von Zahl 2 wegnehme.
Ich möchte nicht den Singleline mode nehmen, da sich das offenbar schlecht auf die Performance auswirkt...ist ein recht langer Quellcode einer Webseite.

Problem scheint das hier zu sein: (?:^.*$)+?
Damit möchte ich 1-n Zeilen beschreiben, in denen alles mögliche oder auch gar nichts steht. Jetzt wo ich es laut lese, wird das wohl Performance-Technisch auch nocht so toll sein und aufs gleiche raus kommen wie singleline. Kann mir hier jemand helfen? Am liebsten würde ich einfach die Zeilen-Anker ^ und $ Quantifizieren, aber das geht wohl nicht.

W
955 Beiträge seit 2010
vor 4 Jahren

Geht's um eine Fingerübung mit regulären Grammatiken? Ansonsten kannst du doch einfach nach "Zahl 1 ist" bzw. "Zahl 2 ist" suchen.

2.078 Beiträge seit 2012
vor 4 Jahren

Tut's das?

https://regex101.com/r/OVWrGT/1

Im Prinzip hab ich das Pattern nur reduziert, dass es nicht den großen Bereich findet, sondern die zwei Teilbereiche.
Dann hast Du halt nicht ein Ergebnis mit allen Werten, sondern mehrere Ergebnisse mit je einem Wert, die Du dann in C# noch durchsuchen muss.

Übrigens:
regex101 kann speichern, drück einfach STRF + S, dann bekommst Du einen Link wie oben.