我可以在正则expression式中使用OR而不捕获封闭的内容吗?

我使用rubular.com来构build我的正则expression式,其文档描述如下:

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

我如何使用ORexpression式而不捕获其中的内容? 所以如果我想匹配“a或b跟着ac”,并且只捕获c,我不能使用

 (a|b)(c) 

对? 然后我抓住“a或b”以及“c”。 我知道我可以通过捕获的结果进行筛选,但似乎更多的工作…

我错过了什么明显的? 我在Java中使用这个,如果这是相关的。

根据正则expression式实现,可以使用语法(?:…)所谓非捕获组

 ((?:a|b)c) 

这里(?:a|b)是一个组,但不能引用它的匹配。 所以你只能引用((?:a|b)c) acbc的匹配。

如果你的实现有它,那么你可以使用非捕获括号:

 (?:a|b) 

即使是rubular也不会让你使用括号和|的优先级 低。 例如a | bc不符合ccc