Как вы возвращаете только найденную группу?Регулярное выражение «Или» Вернуть одну группу Java
У меня есть это регулярное выражение:
".*>(\\d+.*)\\s.*\\(.*</|>(\\d+.+)<"
Когда я бегу:
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(comparisonString);
if(m.find() == true){
System.out.println(m.group(1));
}
Всякий раз, когда вторая часть выражения сопоставляется (выражение после оператора в «OR»), нуль возвращается , Как вернуть сопоставимую группу всякий раз, когда выполняется вторичное выражение (выражение после «ИЛИ»)?
Спасибо! Я в конце концов закончилось это сделать: «если (m.group (1)! = NULL) { \t \t \t \t \t \t \t System.out.println (m.group (1)); \t \t \t \t \t \t} еще {\t \t \t \t \t \t \t System.out.println (m.group (2)); \t \t \t \t \t \t} – rmp2150
О, так что только один должен соответствовать? В этом случае было бы проще иметь две необязательные группы, одна из которых будет соответствовать, используя? оператор: «(Первая группа)? (Вторая группа)?». – Charles
Вместо того, чтобы поблагодарить его, почему бы вам не поддержать его ответ? –