Zerlegt eine Zeichenkette in Sätzen mit regulären Ausdruck
Ich brauche, um einen string wie "ein. zwei. drei. vier. fünf. sechs. sieben. acht. neun. zehn. elf" in Gruppen von vier Sätzen. Ich brauche einen regulären Ausdruck, um zu brechen die Zeichenfolge in eine Gruppe nach jeder vierten Periode. So etwas wie:
string regex = @"(.*.\s){4}";
System.Text.RegularExpressions.Regex exp = new System.Text.RegularExpressions.Regex(regex);
string result = exp.Replace(toTest, ".\n");
nicht, weil es wird ersetzen Sie den text, bevor Sie die Zeiträume an, nicht nur die Perioden selbst. Wie kann ich zählen nur die Zeiten und ersetzen Sie Sie mit einem Zeit-und neue-Zeile-Zeichen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
.
im regex bedeutet "irgend ein Zeichen"also in deinem regex, die Sie verwendet haben
.*.
was passt auf ein Wort (dies entspricht.+
)Waren Sie wahrscheinlich auf der Suche nach
[^.]\*[.]
- eine Reihe von Zeichen, die nicht ".
"s gefolgt von einem ".
".Versuchen, die Definition der Methode
und mit
Diese sollten rufen Sie die Methode für jedes Spiel, und ersetzen Sie es mit diese Methode das Ergebnis. Die Methode, das Ergebnis wäre der passende text und einem Zeilenumbruch.
EDIT: Außerdem Stimme ich Oliver. Die richtige regex-definition sollte:
Noch ein edit: Behoben, dass der regex, ich hoffe, ich habe es dieses mal richtig.
Sind Sie gezwungen, dies über regex? Wäre es nicht einfacher, nur split die Zeichenfolge dann den array?
Ich bin nicht sicher, ob der Konfigurator Antwort bekam entstellt durch den editor oder was, aber es funktioniert nicht.
Das Richtige Muster ist
Suchbegriff:
@"(?:([^\.]+?).\s)(?:([^\.]+?).\s)(?:([^\.]+?).\s)(?:([^\.]+?).\s)"
Ersetzen Ausdruck:
"$1 $2 $3 $4.\n"
Ich habe diesen Ausdruck in RegexBuddy mit .NET regex aktiviert, und die Ausgabe ist:
Versuchte ich mit einem
@"(?:([^.]+?).\s){4}"
Art der Anordnung, sondern der Aufnahme wird nur zu erfassen, die letzten vorkommen (z.B. word), so dass, wenn es kommt, um zu ersetzen, verlieren Sie drei Wörter aus 4. Jemand bitte korrigieren Sie mich, wenn ich falsch bin.In diesem Fall scheint es, dass die regex ist ein bisschen übertrieben. Ich würde empfehlen, mit String.split und dann bricht das resultierende array von strings. Es sollte viel einfacher und sehr viel sicherer als zu versuchen, um eine regex zu tun, was Sie zu tun versuchen.
Etwas wie dieses wäre ein bisschen einfacher zu Lesen und zu Debuggen.