472 Stimmen

Regulärer Ausdruck, um eine Zeichenkette zu finden, die zwischen zwei Zeichen eingeschlossen ist, wobei die Begrenzungszeichen AUSGESCHLOSSEN werden

Ich muss aus einer Zeichenkette einen Satz von Zeichen extrahieren, die zwischen zwei Begrenzungszeichen enthalten sind, ohne die Begrenzungszeichen selbst zurückzugeben.

Ein einfaches Beispiel soll dies verdeutlichen:

Ziel : Extrahiert die Teilzeichenkette zwischen eckigen Klammern, ohne die Klammern selbst zurückzugeben.

Basiskette : This is a test string [more or less]

Wenn ich z. B. die folgende Regelung verwende.

\\\[.\*?\\\]

Das Spiel ist [more or less] . Ich brauche nur zu bekommen more or less (ohne die Klammern).

Ist es möglich, dies zu tun?

4voto

techguy2000 Punkte 3853

Ich wollte eine Zeichenfolge zwischen / und # finden, aber # ist manchmal optional. Hier ist die Regex, die ich verwende:

  (?<=\/)([^#]+)(?=#*)

2voto

Jamaxack Punkte 2372

So kam ich ohne '[' y ']' in C#:

var text = "This is a test string [more or less]";

// Getting only string between '[' and ']'
Regex regex = new Regex(@"\[(.+?)\]");
var matchGroups = regex.Matches(text);

for (int i = 0; i < matchGroups.Count; i++)
{
    Console.WriteLine(matchGroups[i].Groups[1]);
}

Die Ausgabe ist:

more or less

-1voto

Nico Punkte 808

Wenn Sie den Text ohne die Klammern extrahieren müssen, können Sie bash awk verwenden

echo " [hola mundo] " | awk -F'[][]' '{print $2}'

Ergebnis:

hola mundo

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X