2 Stimmen

Spiel innerhalb eines Spiels

Ich habe einen einfachen String:

data1:abc,123,xyz,data2:hello,goodbye

Ich brauche RegEx, um eine Übereinstimmungssammlung von zurückzugeben:

abc
123
xyz

In der Vergangenheit würde ich es mit einem regulären Ausdruck machen:

data1:(.*)data2:

und dann den Output daran aufteilen. auf das Komma.

Gibt es einen Weg, um dies als einen regulären Ausdruck und keinen externen Code zu machen?

2voto

stema Punkte 85725

Versuchen Sie dies

String text = "data1:abc,123,xyz,data2:hello,goodbye";
Regex reg = new Regex(@"(?<=data1:.*)[^,]+(?=.*data2)");

MatchCollection result = reg.Matches(text);

foreach (var item in result) {
    Console.WriteLine(item.ToString());
}

output:

abc
123
xyz

1voto

Pranay Rana Punkte 170480

Nicht sicher, aber du kannst so etwas machen wie

String s="data1:abc,123,xyz,data2:hello,goodbye "
sttring[] slst= s.split(":");

for (int i = 0;i

0 Stimmen

Vielen Dank für das Feedback, aber ich muss dies ohne jeglichen Code machen, nur mit dem regulären Ausdruck.

0 Stimmen

Warum brauchen Sie nur eine Regex-Lösung?

0 Stimmen

Weil dies tatsächlich ein Konfigurationswert ist, den ich an eine Anwendung übergebe und ich nicht mehr Code zur Lösung hinzufügen wollte. Das Übergeben eines vollständig ausformulierten Regex, der diese Arbeit für mich erledigt, erspart mir das Neu-Codieren einer Kernmethode.

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