137

正規表現を作成するためにrubular.comを使用していますが、そのドキュメントには次のように記載されています。

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

内容をキャプチャせずにOR式を使用するにはどうすればよいですか?たとえば、「ac」または「bc」のいずれかをキャプチャするとします。正規表現を使用できません

(a|b)(c)

右?それ以来、私はあるグループで「a」または「b」をキャプチャし、別のグループで「c」をキャプチャしますが、同じではありません。キャプチャした結果をフィルタリングできることはわかっていますが、それはもっと手間がかかるようです...

明らかな何かが欠けていますか?それが適切であれば、私はこれをJavaで使用しています。

4

4 に答える 4

229

正規表現の実装に応じて、次の構文でいわゆる非キャプチャグループ(?:…)を使用できます。

((?:a|b)c)

ここ(?:a|b)にグループがありますが、その一致を参照することはできません。したがって、参照できるのは、またはの((?:a|b)c)いずれかacである一致のみですbc

于 2010-07-31T15:45:14.317 に答える
29

実装にそれがある場合は、キャプチャしない括弧を使用できます。

(?:a|b)
于 2010-07-31T15:46:01.137 に答える
5

ORの選択肢がすべて単一文字の場合、「文字セット」演算子を使用できます。

([ab]c)

acまたはにのみ一致し、bcより読みやすくなります。

于 2020-03-17T17:44:21.223 に答える
3

rubularでさえ、括弧を使用させず、の優先順位|は低くなります。たとえば、a|bcはcccと一致しません

于 2010-07-31T15:59:21.837 に答える