Итак, так или иначе (играя вокруг), я нашел себя с регулярным выражением, например \d{1}{2}
.
Логически для меня это должно означать:
(цифра ровно один раз) ровно в два раза, т.е. цифра ровно в два раза.
Но это, по сути, означает просто "цифру ровно один раз" (таким образом, игнорируя {2}
).
String regex = "^\\d{1}{2}$"; // ^$ to make those not familiar with 'matches' happy
System.out.println("1".matches(regex)); // true
System.out.println("12".matches(regex)); // false
Аналогичные результаты можно увидеть, используя {n}{m,n}
или аналогичный.
Почему это происходит? Является ли это явно указано в документации regex/Java где-то или это просто решение, которое разработчики Java сделали "на лету" или это может быть ошибка?
Или это на самом деле не игнорируется, и это на самом деле означает что-то еще?
Не так уж важно, но это не поведенческое поведение регулярных выражений, Rubular делает то, что я ожидаю.
Примечание. Заголовок предназначается, в основном, для поиска пользователей, которые хотят знать, как это работает (не почему).