Подтвердить что ты не робот

Могу ли я использовать OR в регулярном выражении без захвата вложенных?

Я использую rubular.com для создания своего регулярного выражения, и их документация описывает следующее:

(...)   Capture everything enclosed
(a|b)   a or b

Как я могу использовать выражение OR без учета того, что в нем? Поэтому, если я хочу совместить "a или b, за которым следует c", и только захватить c, я не могу использовать

(a|b)(c)

правильно? Затем я фиксирую как "a", так и "b", а также "c". Я знаю, что могу фильтровать полученные результаты, но это похоже на большую работу...

Я пропустил что-то очевидное? Я использую это на Java, если это уместно.

4b9b3361

Ответ 1

В зависимости от реализации регулярного выражения вы можете использовать так называемые группы без захвата с синтаксисом (?:…):

((?:a|b)c)

Здесь (?:a|b) - это группа, но вы не можете ссылаться на ее соответствие. Таким образом, вы можете ссылаться только на соответствие ((?:a|b)c), которое равно либо ac, либо bc.

Ответ 2

Если ваша реализация имеет его, то вы можете использовать скобки без заедания:

(?:a|b)