1. ホーム
  2. regex

[解決済み] 正規表現でORを使用すると、囲まれているものをキャプチャできないのですか?

2022-06-10 21:02:25

質問

私は rubular.com を使用して正規表現を構築していますが、そのドキュメントには次のように記述されています。

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

OR式の中身を取り込まずに使用するにはどうしたらよいですか?たとえば、"ac" または "bc" のいずれかをキャプチャしたいとします。正規表現を使用することはできません。

(a|b)(c)

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

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

どのように解決するのですか?

正規表現の実装によっては、いわゆる 非捕捉グループ という構文で (?:…) :

((?:a|b)c)

ここで (?:a|b) はグループですが、そのマッチを参照することはできません。ですから ((?:a|b)c) のどちらかである ac または bc .