私はこれを理解しようとして何時間も壁に頭をぶつけてきました。3つのグループが存在する場合はそれらをキャプチャし、存在しない場合は最初のグループのすべてをキャプチャしようとしています。これを個別の正規表現ステートメントに分割することはできますが、1つを維持するのは素晴らしいことです。
4つの異なる文字列は次のようになります。
Be somewhere now & be there later (Store) @1300
Be at work! @1430
Go home whenever (Home)
Don't ever go to the donut shop.
私が探している最終結果は次のようになります。
(Group 1) Be somewhere now & be there later (Group 2) Store (Group 3) @1300
(Group 1) Be at work! (Group 2) (Group 3) @1430
(Group 1) Go home whenever (Group 2) Home (Group 3)
(Group 1) Don't ever go to the donut shop. (Group 2) (Group 3)
これまでにできる最善のことは、1番目と2番目のオプションを処理し、グループ3のみを取得することです。これを使用してこれを実行しました。
.*(?:\(.*\))?\s(\@\d+)$
.*
私がそれをそれに変えるならば、それを(.*)
常にすべてに一致させるので、私はそれを取り除く必要があるだろうとかなり確信しています。
私は私が知っているあらゆる方法を試しましたが、それを機能させることができないので、今私はあなたに連絡します。:-)