myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » Rund um die Programmierung » Multiline Regex mit unbekannten Zeilenabständen
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Multiline Regex mit unbekannten Zeilenabständen

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
ByteDevil ByteDevil ist männlich
myCSharp.de-Mitglied

avatar-4066.png


Dabei seit: 02.03.2013
Beiträge: 120
Entwicklungsumgebung: VS 2019 Pro


ByteDevil ist offline

Multiline Regex mit unbekannten Zeilenabständen

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo,

gegeben sei folgender Test-String:

Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
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:

Code:
1:
^\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 18.12.2019 11:26.

18.12.2019 11:11 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
witte
myCSharp.de-Mitglied

Dabei seit: 03.09.2010
Beiträge: 883


witte ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Geht's um eine Fingerübung mit regulären Grammatiken? Ansonsten kannst du doch einfach nach "Zahl 1 ist" bzw. "Zahl 2 ist" suchen.
18.12.2019 12:09 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Palladin007 Palladin007 ist männlich
myCSharp.de-Mitglied

avatar-4140.png


Dabei seit: 03.02.2012
Beiträge: 1.268
Entwicklungsumgebung: Visual Studio 2019
Herkunft: NRW


Palladin007 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

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 18.12.2019 13:08.

18.12.2019 13:08 Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum Der Startbeitrag ist älter als 6 Monate.
Der letzte Beitrag ist älter als 6 Monate.
Antwort erstellen


© Copyright 2003-2020 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 09.07.2020 02:39