Java Regex.Pattern поддерживает следующий класс символов:
[a-z&&[def]]
, который соответствует "d, e или f" и называется пересечением.
Функционально это ничем не отличается от:
[def]
, который проще читать и понимать в большом RE. Поэтому у меня вопрос: для чего нужны пересечения, кроме указания полной поддержки CSG-подобных операций над классами символов?
(Обратите внимание, я понимаю полезность вычитаний, таких как [a-z&&[^bc]]
и [a-z&&[^m-p]]
, я спрашиваю конкретно о пересечениях, как представлено выше.)