Entwickler-Ecke
Basistechnologien - Regex: Wörter dürfen nicht auftauchen!
M-Cha - Mi 13.01.10 17:38
Titel: Regex: Wörter dürfen nicht auftauchen!
Ich habe mehrere Strings die ich aus einem Dokument lese.
Bekomme auch alle ausgelesen. Ich lese alle String mit dem Wortanfang "CREATE" aus.
Jetzt möchte ich aber, das er mir nur die Strings mit Create ausließt, wo als zweites Wort kein Verein, Club oder Verband hinter steht.
C#-Quelltext
1:
| Regex CREATE = new Regex(@"(?i)(Create\s).*?\.\s", RegexOptions.Singleline); |
Bsp:
Create test blllblbbll
Create Verein vlvllvlv
Create Verband
danielf - Mi 13.01.10 18:08
Du bist aber sehr hartnäckig ;)
Wie wärs wenn du es in zwei Teilen parst? Mehr Hilfestellungen fallen mir nicht mehr ein... das DU es verstehst.
Gruß Daniel
M-Cha - Do 14.01.10 09:02
Ja Leider will ich immer genauer parsen und weiter :-)
Das wort CREATE ist fest.
Manchmal gibt es CREATE verein oder create verband.
Die soll er nicht nehmen.
Ich dachte an sowas wie [^Verein]
danielf - Do 14.01.10 10:39
Ich hatte dir ja schon den kompletten Code für dein File gegeben... und auch mehrere Hinweise dass du es locker in zwei Schritten machen kannst. Ich meinen Augen gibt es 0 Probleme mehr. Du hast alles in der Hand um es richtig zu machen.
Viel Erfolg
Daniel
bakachan - Do 14.01.10 10:59
M-Cha hat folgendes geschrieben : |
Ich dachte an sowas wie [^Verein] |
Ich glaube diese Buchstaben auszuschließen bringt nicht den gewünschten Effekt.
Du könntest an dieser Stelle einen Look-Ahead verwenden.
danielf - Do 14.01.10 11:08
Ich verstehe nicht, wieso er es nicht einfach in zwei Schritten macht :nixweiss:
Alles andere ist für ihn doch eh zu kompliziert :mahn: Warum also nicht einfach den leicht Weg nehmen, anstatt ein halbes Jahr an dem Problem rum zu machen ?? (Ist schon der 4 Thread mit unzähligen Posts von ihm - in einem steht auch schon bereits die Lösung, die Ihn aber nicht interessiert.)
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| MatchCollection matches = Regex.MatchCollection("Create (?<blub>x)...");
foreach(var match in matches) { if (match.Groups["blub"].Success) { .... } } |
Das konkrete Pattern aus dem entsprechenden (frühren) Thread nehmen - suchen kannst ja selber?!
M-Cha - Do 14.01.10 11:33
Ich gehe mal von aus du meinst das hier mit den zwei schritten!
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| Regex CREATE = new Regex(@"(?i)(Create\s).*?\.\s", RegexOptions.Singleline);
MatchCollection cr = CREATE.Matches(inhalt);
for (int k = 0; k < cr.Count; k++) { string pattern3 = @"((?i)(Create)|(\s))+(?<1>[^\s\(]*)";
Match match2 = Regex.Match(cr[k].Value, pattern3);
Console.WriteLine(match2.Groups[1].Value); } |
Da hole ich mir ja erst die Create Strings und dann die jeweiligen Wörter die ich brauche nachdem Create.
Manchmal gibt es aber nacdem Create noch ein Wort das den String den ich brauche unbrauchbar macht. Deshalb brauche ich den nicht. Komm einfahc nicht drauf!
M-Cha - Mo 18.01.10 01:26
Also ich kommt echt nicht drauf wie ich das lösen kann. Hab mir das jetzt 2 Tage lang angeschaut und im Internet nach Hilfe gesucht. Leider nichts gefunden wie ich das lösen kann.
Will das umbedingt lernen und erfahren wie es geht. Bitte um weitere Hilfestellung!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!