dann los... wie können reguläre Ausdrücke bei diesem Problem helfen? Ich dachte immer die wären was fürs Suchen....
Ich mach es jetzt mit der entsprechenden Java-Implementierung, da ich die am häufigsten benutzt habe.
Das Geheimnis sind Capturing-Groups, wie sie von vielen Implementierungen angeboten werden.
Ausgehend von den Beispielen:
Code:
99,10,Text1=Text2
99,Text1=Text2
Komm ich zu diesem Ausdruck:
Code:
([0-9]+),(?:([^,]*),)?([^=]*)=(.*)
Die Capturing-Groups sind:
- ([0-9]+)
- ([^,]*)
- ([^=]*)
- (.*)
Sie lassen sich dann einzeln auslesen:
Code:
import java.util.regex.*;
class PatternTest {
static public void main(String[] args)
{
if (args.length == 1) {
Pattern pattern = Pattern.compile("([0-9]+),(?:([^,]*),)?([^=]*)=(.*)");
Matcher matcher = pattern.matcher(args[0]);
if (matcher.matches()) {
// group 0 is the whole match
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
} else {
System.out.println("No match!");
}
} else {
System.out.println("Nothing to match!");
}
}
}
Gut, ich gebe zu: Das hat jetzt etwas länger gedauert als es sollte.
Ich musste nochmal die nötigen Klassen und die Regex-Syntax nachgooglen