Laden...

Muster in einem string suchen, das mehrmals vorkommt und anschließend formatiert ausgeben!

Erstellt von csharp-user vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.975 Views
C
csharp-user Themenstarter:in
63 Beiträge seit 2011
vor 6 Jahren
Muster in einem string suchen, das mehrmals vorkommt und anschließend formatiert ausgeben!

Hallo zusammen,

ich habe eine string Variable, die ca. 200 HTML Zeilen beinhaltet. Wie kann ich in diesem String nach einem Muster suchen, das mehrmals in diesem String vorkommt? Ich möchte anschließend ein Teil von diesem Muster filtern und in ein StringBuilder oder in eine Datei speichern.

Zum Beispiel:

Die String Variable beinhaltet n „username“, die ich filtern möchte:

Text bla bla {"username": "Mueller"} bla bla
Text bla bla {"username": "Meyer"} bla bla
Text bla bla {"username": "Becker"} bla bla

Wie bekomme ich nun so eine Liste?

Mueller
Meyer
Becker

Vielen Dank im Voraus.

1.040 Beiträge seit 2007
vor 6 Jahren

Das geht mit Regular Expressions.
Leider bin ich kein RegEx-Profi, um dir mal schnell ein Beispiel hinzubasteln, aber da kann sicher gleich jemand anderes helfen. =)

https://regex101.com/

M
368 Beiträge seit 2006
vor 6 Jahren

Regex wurde schon genannt (evtl. auch mit LINQ)
Ein Beispiel zur Güte: https://www.codeproject.com/Articles/93804/Using-Regular-Expressions-in-C-NET
Im konkreten Fall den Text extrahieren, der zwischen den " " steht und nicht "username" heisst.

Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉

C
csharp-user Themenstarter:in
63 Beiträge seit 2011
vor 6 Jahren

Dank für den Link.

Ich habe vorhin mit

Regex reg = new Regex(@"/ {.username.: /g");

probiert, aber ohne Erfolg. Ich glaube, dass das Ganze etwas komplizierte ist, als ich gedacht habe.

16.842 Beiträge seit 2008
vor 6 Jahren

Das sieht auch nicht nach einem gültigen Regex-String aus.
Zeichen wie {} oder . und viele andere haben spezielle Bedeutungen in Regex. Soll diese Bedeutung nicht genutzt werden, muss sie escaped werden.
Ebenso fehlt Deinem Regex auch das entsprechende matchende Element.

"Rumstochern" ist in der Entwicklung nie eine gute Idee.
In Regex kann das sogar einfach nur fatal sein.

C
csharp-user Themenstarter:in
63 Beiträge seit 2011
vor 6 Jahren

Ich muss mit Regex irgendwie {"username": "Mueller"}, die auch mehrmals in diesem string vorkommt auslesen und anschließend mit substring den User filtern. Mir fällt nur der Regulärer Ausdruck.

Gibt es ein online Regex Generator? Man gibt das Suchmuster ein und der Generator generiert den Ausdruck.

16.842 Beiträge seit 2008
vor 6 Jahren

Generatoren? Nein, aber Tools wie es Dir p!lle genannt hat.
Du musst Dich hier mit Group Capturing und Regex Escape beschäftigen, da {} besondere Zeichen in Regex darstellen.
Zudem hat Dein Regex string überhaupt kein Capturing. Es wird also nichts gesucht oder gematched.
Nen bisschen was durchlesen muss man schon, wenn man was Neues nutzen will 😉

Zudem ist /g das Global Flag in PHP.
Das wird so in .NET nicht funktionieren.

Davon abgesehen, dass das Forum auch kein Regex-Generator darstellt, hast Du nichts gelernt, wenn wir Dir einfach den Regex-String basteln.
Da wäre der Sinn des Forums völlig dahin.

M
177 Beiträge seit 2009
vor 6 Jahren