Я пытаюсь создать регулярное выражение, которое соответствует ровно двум экземплярам символа в классе. Это регулярное выражение, которое я сделал:
(?<!\1)([^raol1c])\1(?!\1)
Как видите, здесь используются негативы в упреждающем и обратном направлении. Но, как обычно, последнее не работает; java выдает хорошо известное исключение «группа просмотра не имеет очевидной максимальной длины», когда она явно имеет максимальную длину (ровно один символ).
В идеале регулярное выражение должно соответствовать «hh», «jhh», «ahh», «hhj», «hha», но не «hhh».
Есть идеи о том, как с этим справиться и найти обходной путь?
"hhaa"
совпадать? - person jlordo   schedule 20.05.2013([^raol1c])\1+
и убедитесь, что результат не превышает двух символов. - person Martin Ender   schedule 20.05.2013(?<!\1)
будет оцениваться,\1
еще не захвачен. Это должен быть([^raol1c])(?<!\1.)\1(?!\1)
, который работает в PCRE2. - person Deadcode   schedule 07.12.2019