Archiv verlassen und diese Seite im Standarddesign anzeigen : wie oft ein Muster enthalten?
Hallo,
ich arbeite mit VB.NET 2.
Ich habe z.B. folgenden String:
"vbxdj123nfd njkfdk 97123nfdhed nfj12345njfdj123njfjj"
Nun hätte ich gerne gewußt, wie oft darin "123" vorkommt (im obigen Fall nämlich: 4 mal)?
oder
an welchen Stellen im String (nämlich an a1,a2,a3,a4- hab keine Lust das nachzuzählen)?
Kann man das ohne Schleife programmieren zu müssen mit regulärem Ausdruck ermitteln?
Danke für Eure Hilfe
apelles
du musst doch nur ne schleife um den regexp basteln und innendrin eine variable hochzählen
Hmm.. bin nicht sicher, ob ich alles richtig verstanden habe.
Kann man das nicht so machen?
Dim f As String = "vbxdj123nfd njkfdk 97123nfdhed nfj12345njfdj123njfjj"
Dim s As String = "123"
MsgBox(f.Split(New String() {s}, StringSplitOptions.None).GetUpperBound(0))
'Oder so:
MsgBox(System.Text.RegularExpressions.Regex.Matches(f, s).Count())
Danke euch für eure Antworten.
amoxys erster Vorschlag mit: .GetUpperBound(0) habe ich bereits in meiner Not schon verwirklicht gehabt. Diesen Weg wollte ich eigentlich nicht gehen.
zweiter Vorschlag mit:.Regex.Matches(f,s).Count() funktioniert voll gut-finde ich super-werde ich auch benutzen!!! Danke dir.
Ich habe aber eigentlich an sowas wie die Notation: \d+ und etwas dahinter wie z.B. g (diese Option soll für -global- stehen und lt. Autor WENZ soll der gesamte String nach allen Treffern durchsucht werden?).
Ob sowas vom .NET unterstützt wird, weiss ich nicht. Ich fand es in der Dokumentation nicht (vielleicht falsch gesucht?).
Mit \d+ finde ich natürlich nur die erste vollständige Zahl, also nicht direkt das was ich suche ("123"), aber die restlichen Zahlen werden allerdings nicht aufgeführt.
Wenn ich z.B. alle Zahlen aus dem gesamten Text aufgelistet bekäme, kann ich dann nach "123" suchen.
Wie kriegt man das in der Notation der Reguleren Ausdrücke raus.
Ich will es nicht mit VB programmieren!
Danke für weitere Antworten mit Stück Code.
schöne grüße
apelles
Ich habe aber eigentlich an sowas wie die Notation: \d+ und etwas dahinter wie z.B. g (diese Option soll für -global- stehen und lt. Autor WENZ soll der gesamte String nach allen Treffern durchsucht werden?).
Ob sowas vom .NET unterstützt wird, weiss ich nicht. Ich fand es in der Dokumentation nicht (vielleicht falsch gesucht?).
Mit \d+ finde ich natürlich nur die erste vollständige Zahl, also nicht direkt das was ich suche ("123"), aber die restlichen Zahlen werden allerdings nicht aufgeführt.
Das ist in Regex.Matches ja schon integriert. Damit wird nach allen Vorkommen gesucht. Wenn nur nach dem ersten Vorkommen gesucht werden soll, verwendet man Regex.Match, bzw Regex.IsMatch, wenn man nur wissen will, ob es überhaupt Vorkommen gibt.
Wenn ich z.B. alle Zahlen aus dem gesamten Text aufgelistet bekäme, kann ich dann nach "123" suchen.
Wie kriegt man das in der Notation der Reguleren Ausdrücke raus.
Man könnte das entweder nacheinander abfragen, also in jedem Treffer von \d+ nochmal nach 123 suchen. Oder man fragt direkt nach \d*123\d*, um die Zahlen zu erhalten, in denen 123 vorkommt.
Habe ich es falsch verstanden?
Hallo amoxys,
vielen Dank für deinen Einsatz. Richtig verstanden!
War mir sehr große Hilfe.
Ich hab´s ausprobiert.
Nochmals vielen Dank.:):):)
apelles
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.