Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

30.08.2014, 10:40

C# Regex Problem

Hi,

ich hätte da eine Frage bezüglich dem Regex in C#.

Ich habe das folgende Übungsbeispiel und die Regex dazu, was nicht funktioniert.^^


C#-Quelltext

1
2
3
string text = "Hallo mein Name ist Jan - besuche noch die Schule bis nächstes Jahr";

Match = Regex.Match(text, @"[A-Za-z0-9]");



Ich weiß das der Regex blödsinning ist, aber wie kann ich es hin bekommen, einen Regex zu definieren, mit dem ich Alle Zeichen bis (bindestrich, also "-") auslese und dann alle Zeichen nach dem Wort "bis". Und der Rest der Zeichenkette die übrig bleibt sollen entfernt werden. Ist mein erstes mal mit Regex.

Ich wäre über Tipps und Ratschläge sehr dankbar :)

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

2

30.08.2014, 10:50

Regex sind hier der falsche Weg. Es gibt IndexOf und Substring als Methdon von String, mit denen du genau dein Problem lösen kannst.

3

30.08.2014, 11:07

Das weiß ich, nur ich möchte mit regex arbeiten lernen, wie oben auch beschrieben. Bitte regexvorschläge nur ok^^

Es geht mir nur ums lernen.

MitgliedXYZ

Alter Hase

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

4

30.08.2014, 11:25

Vielleicht hilft dir das beim testen:
http://www.regexr.com/

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

5

30.08.2014, 11:40

Ich hab kp ob ich dich richtig verstehe, aber wenn du einen Regex suchst, der ein Match für alle Zeichen bis '-' findet und als zweiten Match den Rest, dann ist das sowas simples: ^(.+?)\-(.+?)$
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

6

30.08.2014, 11:43

Nicht den Rest, sondern ab dieser zweiten Zeichenfolge. In dem Fall alle Zeichen nach dem Wort "bis".

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

7

30.08.2014, 11:44

Ok, dann sowas? ^(.+?)\-.*?(?:bis)(.+?)$
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

8

30.08.2014, 11:47

Ne^^

Das Ergebis sollte lauten: "Jan" und "nächstes Jahr".

das müsste ich rausbekommen.

9

30.08.2014, 11:50

Ahhhh nein sryyy, ich habe die klammer vergessen miteinzu beziehen^^ mein fehler klappt vielen Dank :)))

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

10

30.08.2014, 11:53

Ganz elegant mit look ahead wäre das so zu lösen: ([a-zA-Z]+)\s+(?=\-).*?(?:bis)\s+(.+?)$
edit: Ah, ok, hast es selbst hinbekommen. :)
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Werbeanzeige