Ich versuche, erhalte die folgende regex zu bekommen auf meinem String zu arbeiten:NULL-Werte von Java Regex Matcher mit einem gefundenen Muster
Pattern Regex = Pattern.compile("(?:(\\d+) ?(days?|d) *?)?(?:(\\d+) ?(hours?|h) *?)?(?:(\\d+) ?(minutes?|m) *?)?(?:(\\d+) ?(seconds?|s))?",
Pattern.CANON_EQ | Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Matcher RegexMatcher = Regex.matcher(myString);
while (RegexMatcher.find()) {
...
}
.. teilt er sich im Grunde eine Zeichenfolge wie 1 Tag 3 Stunden in übereinstimmende Regex-Gruppen.
Das Problem, das ich habe, ist, dass, wenn ich in die While-Schleife, Anrufe an RegexMatcher.group(i)
immer einen NULL
Wert zurückgeben, was bedeutet, dass sie nicht in der Zeichenfolge gefunden wurden.
Wenn ich die Ausgabe versuchen RegexMatcher.group(0)
, gibt es eine leere Zeichenfolge, obwohl myString
definitelly wie "hello 1d"
enthält -, die mindestens erste Gruppe als "1"
und zweitens als "d"
zurückkehren.
Ich habe überprüft und überprüft die Regex und es scheint in Ordnung zu sein. Keine Ahnung was hier falsch ist.
Vielen Dank für alle Ideen :-)
ich den Verdacht haben, dass es zu einem nicht-einfangenden Gruppen in engem Zusammenhang steht . – Corbin
hat versucht, alle nicht-einfangenden Gruppen sowie die Pattern.CANON_EX-, Pattern.UNICODE_CASE- und Pattern.CASE_INSENSITIVE-Flags ohne Erfolg zu entfernen. –
hat außerdem versucht, Capture-Gruppen in nicht erfassenden Gruppen zu entfernen und die großen nicht-einfangenden Gruppen vollständig zu entfernen. keine Freude dort –