У меня есть строка, содержащая, например. 1A2B. Число от 1 до 9, а буква (a | b) постоянна. Я хочу регулярное выражение, которое ищет «1a» и «2b», где любая группа является необязательной.regex - необязательно захватить 2 группы
Я это ...
String description = "bla bla bla: 1a2b more bla bla bla";
Pattern pattern = Pattern.compile("([1-9]a)([1-9]b)");
Matcher matcher = pattern.matcher(description);
if (matcher.find()) {
System.out.println(" group1: " + matcher.group(1));
System.out.println(" group2: " + matcher.group(2));
} else {
System.out.println("no match");
}
, который выводит
group1: 1a
group2: 2b
Если добавить ?
после ОБЕИМ группы она все еще работает. Если я добавлю ?
после BOTH, он по-прежнему совпадает, но возвращает null для обеих групп.
Как сделать обе группы необязательно так, что он будет соответствовать
случай 1: "бла-1a бла"
случай 2: "бла 2б бла"
случай 3: «бла 1A2B bla " ?
Вы пробовали '|' –
Просто быстрый вопрос: почему бы не использовать '([1-9]?) ([ab])'? «a» и «b» постоянны, поэтому цифра может отсутствовать. –
Один, другой или оба: '([1-9] a) | ([1-9] b) | ([1- 9] a) ([1-9] b) ' – Shloim