Я пытаюсь заставить следующее регулярное выражение работать с моей строкой:
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()) {
...
}
.. это в основном разбивает строку типа 1 день 3 часа на соответствующие группы регулярных выражений.
Проблема, с которой я столкнулся, заключается в том, что при входе в цикл while вызовы RegexMatcher.group(i)
всегда возвращают значение NULL
, означающее, что они не были найдены в строке.
Когда я пытаюсь вывести RegexMatcher.group(0)
, он возвращает пустую строку, хотя myString
определенно содержит как "hello 1d"
- который должен вернуть по крайней мере 1-ую группу как "1"
, а вторую как "d"
.
Я проверил и дважды проверил регулярное выражение, и, похоже, все в порядке. Понятия не имею, что здесь не так.
Спасибо за любые идеи: -)