/ / Regex.Split alles in eckigen Klammern [] - c #, Regex, Split

Regex.Split alles in eckigen Klammern [] - c #, Regex, Split

Ich bin wirklich ein n00b, wenn es um reguläre Ausdrücke geht. Ich habe versucht, eine Zeichenfolge aufzuteilen, wo auch immer es ist [----anything inside-----] beispielsweise.

string s = "Hello Word my name_is [right now I"m hungry] Julian";
string[] words = Regex.Split( s, "------");

Das Ergebnis wäre "Hello Word my name_is " und " Julian"

Antworten:

5 für die Antwort № 1

Die Regex, die Sie verwenden möchten, ist:

Regex.Split( s, "\[.*?\]" );

Eckige Klammern sind Sonderzeichen(Angabe einer Zeichengruppe), so dass sie mit einem Backslash versehen werden müssen. Innerhalb der eckigen Klammern möchten Sie eine beliebige Abfolge von Zeichen, mit Ausnahme einer engen eckigen Klammer. Es gibt ein paar Möglichkeiten, damit umzugehen. Eins ist zu spezifizieren [^]]* (explizite Angabe "nicht ein geschlossenes QuadratDie andere, wie ich in meiner Antwort verwendet habe, besteht darin, zu spezifizieren, dass die Übereinstimmung nicht gierig ist, indem man ein Fragezeichen dahinter anfügt. Dies weist den Prozessor mit regulärem Ausdruck an, nicht gierig so viele Zeichen wie möglich zu konsumieren, sondern zu Stoppen Sie, sobald der nächste Ausdruck gefunden wurde.


1 für die Antwort № 2

@"[.*?]" wird den Klammern des Textes entsprechen


0 für die Antwort № 3

Eine andere Möglichkeit, es zu schreiben:

Regex.Split(str, @"[[^]]*]");