Я использую rubular.com для создания моего regex, и их документация описывает следующее:
(...) Capture everything enclosed
(a|b) a or b
Как я могу использовать ИЛИ выражение, не получая то, что находится в нем? Например, скажите, что я хочу получить или "ac" или "до н.э". Я не могу использовать regex
(a|b)(c)
правильно? С тех пор я получаю или "a" или "b" в одной группе и "c" в другом, не то же. Я знаю, что могу проникнуть в полученные результаты, но это походит на большее количество работы...
Я пропускаю что-то очевидное? Я использую это в Java, если это является подходящим.
В зависимости от реализации регулярного выражения вы можете использовать так называемые группы без захвата с синтаксисом (?:…)
:
((?:a|b)c)
Здесь (?: a | b)
- это группа, но вы не можете ссылаться на ее совпадение. Таким образом, вы можете ссылаться только на совпадение ((?: a | b) c)
, которое является либо ac
, либо bc
.
Даже пустые скобки не заставляют вас использовать скобки, а приоритет |
низкий. Например, a | bc не соответствует ccc
Если в вашей реализации это есть, то вы можете использовать неперехватывающие скобки:
(?:a|b)