Gibt es eine Regex-Variante, die es mir ermöglicht, die Anzahl der Wiederholungen zu zählen, die mit der *
y +
Betreiber? Ich würde speziell gerne wissen, ob es unter der .NET-Plattform möglich ist.
Antworten
Zu viele Anzeigen?Sie haben Glück, denn .NET Regex tut dies tatsächlich (was meiner Meinung nach ziemlich einzigartig ist). Im Wesentlichen in jedem Match
jeder Group
speichert alle Captures
die gemacht wurde.
Sie können also zählen, wie oft ein wiederholbares Muster mit einer Eingabe übereinstimmt:
- Aus der Gruppe eine Erfassungsgruppe machen
- Zählen, wie viele Fänge die jeweilige Gruppe in jedem Spiel gemacht hat
- Wenn Sie möchten, können Sie auch durch einzelne Aufnahmen iterieren!
Hier ist ein Beispiel:
Regex r = new Regex(@"\b(hu?a)+\b");
var text = "hahahaha that's funny but not huahuahua more like huahahahuaha";
foreach (Match m in r.Matches(text)) {
Console.WriteLine(m + " " + m.Groups[1].Captures.Count);
}
Dies druckt ( wie auf ideone.com gesehen ):
hahahaha 4
huahuahua 3
huahahahuaha 5
API-Referenzen
Sie können Klammern im Ausdruck verwenden, um eine Gruppe zu erstellen und dann die +
o *
Operator auf die Gruppe. Die Website Captures
Eigenschaft der Group
kann verwendet werden, um festzustellen, wie oft es übereinstimmt. Das folgende Beispiel zählt die Anzahl der aufeinanderfolgenden Kleinbuchstaben am Anfang einer Zeichenfolge:
var regex = new Regex(@"^([a-z])+");
var match = regex.Match("abc def");
if (match.Success)
{
Console.WriteLine(match.Groups[1].Captures.Count);
}