Hallo,
mich würde mal interessieren, ob es eine Möglichkeit gibt mittels der java.util.regex.* Klassen eine NICHT erfolgreichen Match zu untersuchen, also einen Rückgabewert über die Position zu erhalten, an dem der Match gescheitert ist.
Beispiel:
Ich habe folgenden regulären Ausdruck:
und möchte nun überprüfen, ob der String hier passt:
Wenn man es sich genauer ansieht scheitert ein Matching an der Position 105 (ziemlich am Ende, wechsel von 3 nach 21 ist nicht erlaubt) und isMatching ergibt false.
Frage also: Komme ich irgendwie an die (hier manuell ermittelte) Position 105? Hab in der API erstmal nix gefunden.
Grüße,
Steffen
mich würde mal interessieren, ob es eine Möglichkeit gibt mittels der java.util.regex.* Klassen eine NICHT erfolgreichen Match zu untersuchen, also einen Rückgabewert über die Position zu erhalten, an dem der Match gescheitert ist.
Beispiel:
Ich habe folgenden regulären Ausdruck:
Code:
String valid = "1 2 20 4 18 21 15 " +
"16 (21 16 )*" +
"3 12 " +
"6 ((21 6 )|(3 6 ))*" +
"7 ((21 7 )|(3 7 ))*" +
"8 ((21 8 )|(3 8 ))*" +
"9 ((21 9 )|(3 9 ))*" +
"10 ((21 10 )|(3 10 ))*" +
"11 ((21 11 )|(3 11 ))*" +
"13 14 ((21 14 )|(3 14 ))*" +
"19\\s?";
und möchte nun überprüfen, ob der String hier passt:
Code:
String testMe = "1 2 20 4 18 21 15 16 21 16 21 16 3 12 6 3 6 3 6 3 6 7 3 7 3 7 8 3 8 3 8 9 10 11 13 14 3 14 21 14 3 14 3 21 14 21 14 19 ";
Pattern p = Pattern.compile(valid);
Matcher m = p.matches(testMe);
boolean isMatching = m.matches();
Wenn man es sich genauer ansieht scheitert ein Matching an der Position 105 (ziemlich am Ende, wechsel von 3 nach 21 ist nicht erlaubt) und isMatching ergibt false.
Frage also: Komme ich irgendwie an die (hier manuell ermittelte) Position 105? Hab in der API erstmal nix gefunden.
Grüße,
Steffen