文字列を解析する必要があります。フォーマットは!info1!info2!
、info2
はオプションです。regExの同じグループに2つのパターンをキャプチャするにはどうすればいいですか
私は正規表現を使用して、必要に応じてinfo1
とinfo2
をキャプチャしようとしています。
私は、次のパターンを思い付いた:
!([^!]*?)!(.*?)!|!(.*?)!
それは動作しますが、私は結果に満足していない:両方の表現で
!foo!bar! -> Group1: foo Group2:bar
!foo! -> Group3: foo
(https://regex101.com/r/D9d6YP/1)
、foo
は同じことを意味し、そしてありますその後も同じように処理されます。 2番目のグループがあるかどうかにかかわらず、私は同じグループでそれをキャプチャしたいと思います。
私は名前のキャプチャグループを使用しようとしましたが、彼らは
!(?<info1>[^!]*?)!(?<info2>.*?)!|!(?<info1>.*?)!
は、サブパターン名は一意である必要がありますエラーメッセージ」で失敗し、再利用することができないように思えます。
同じグループに異なるパターンをキャプチャする方法はありますか?
Pleaeは、省略可能な部分のない文字列の例を提供します。 – HBP
あなたのregex101リンクはPCREパターンを使用していると思われますか?あれは正しいですか? –
いいえ、.NETです。regex101のフレーバーはデフォルトのものです。 – Maxime