Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Multiline Regex mit unbekannten Zeilenabständen
ByteDevil
myCSharp.de - Member

Avatar #avatar-4066.png


Dabei seit:
Beiträge: 129

Themenstarter:

Multiline Regex mit unbekannten Zeilenabständen

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von ByteDevil am .
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 958

beantworten | zitieren | melden

Geht's um eine Fingerübung mit regulären Grammatiken? Ansonsten kannst du doch einfach nach "Zahl 1 ist" bzw. "Zahl 2 ist" suchen.
private Nachricht | Beiträge des Benutzers
Palladin007
myCSharp.de - Member

Avatar #avatar-4140.png


Dabei seit:
Beiträge: 1411
Herkunft: NRW

beantworten | zitieren | melden

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.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Palladin007 am .
private Nachricht | Beiträge des Benutzers