500 Stimmen

Wie extrahiere ich eine Teilzeichenkette mit regex

Ich habe eine Zeichenfolge, die zwei einfache Anführungszeichen enthält, die ' Charakter. Zwischen den einfachen Anführungszeichen stehen die gewünschten Daten.

Wie kann ich einen Regex schreiben, um "die gewünschten Daten" aus dem folgenden Text zu extrahieren?

mydata = "some string with 'the data i want' inside";

11voto

Debilski Punkte 65106

Weil Sie auch Scala angekreuzt haben, eine Lösung ohne Regex, die problemlos mit mehrfachen Anführungszeichen umgehen kann:

val text = "some string with 'the data i want' inside 'and even more data'"
text.split("'").zipWithIndex.filter(_._2 % 2 != 0).map(_._1)

res: Array[java.lang.String] = Array(the data i want, and even more data)

10voto

ZehnVon12 Punkte 3676
String dataIWant = mydata.replaceFirst(".*'(.*?)'.*", "$1");

3voto

Mihai Toader Punkte 11831

Wie in Javascript:

mydata.match(/'([^']+)'/)[1]

die eigentliche Regexp ist: /'([^']+)'/

Wenn Sie den Modifikator "nicht gierig" verwenden (wie in einem anderen Beitrag beschrieben), sieht es so aus:

mydata.match(/'(.*?)'/)[1]

es ist sauberer.

2voto

ZehnVon12 Punkte 3676

String dataIWant = mydata.split("'")[1];

Ver Live-Demo

2voto

Memin Punkte 3050

Apache Commons Lang bietet eine Vielzahl von Hilfsprogrammen für die java.lang-API, insbesondere Methoden zur String-Manipulation. In Ihrem Fall sind die Start- und Endzeichenketten gleich, also rufen Sie einfach die folgende Funktion auf.

StringUtils.substringBetween(String str, String tag)

Ruft die Zeichenkette ab, die verschachtelt ist in zwischen zwei Instanzen desselben Zeichenkette .

Wenn die Start- und Endsubstrings unterschiedlich sind, verwenden Sie die folgende überladene Methode.

StringUtils.substringBetween(String str, String open, String close)

Ermittelt die Zeichenkette, die zwischen zwei Zeichenketten eingebettet ist.

Wenn Sie alle Instanzen der übereinstimmenden Teilzeichenfolgen haben wollen, verwenden Sie,

StringUtils.substringsBetween(String str, String open, String close)

Durchsucht einen String nach Teilstrings, die durch ein Start- und End-Tag begrenzt sind, gibt alle übereinstimmenden Teilzeichenfolgen in einem Array zurück .

Für das fragliche Beispiel, um alle Instanzen der passenden Teilzeichenkette zu erhalten

String[] results = StringUtils.substringsBetween(mydata, "'", "'");

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