内部に 2 つの複雑なサブパターンを含む長い正規表現があります。そのサブパターンを任意の順序で一致させるにはどうすればよいですか?
簡単な例:
/(apple)?\s?(banana)?\s?(orange)?\s?(kiwi)?/
そして、私は両方を一致させたい
apple banana orange kiwi
apple orange banana kiwi
これは非常に単純化された例です。私の場合banana
、orange
長く複雑なサブパターンであり、次のようなことはしたくありません
/(apple)?\s?((banana)?\s?(orange)?|(orange)?\s?(banana)?)\s?(kiwi)?/
文字クラスで char のようなサブパターンをグループ化することは可能ですか?
要求された UPD 実際のデータ:
14:24 26,37 Mb
108.53 01:19:02 06.07
24.39 19:39
46:00
私の弦はずっと長いですが、重要な部分です。ここでは、一致させる必要がある 2 つの行を確認できます。length
First には、(14 分 24 秒) とsize
26.37 Mbの 2 つの値があります。2 番目の値には 3 つの値がありますが、順序が異なります: 108.53
Mb
、size
01 length
h 19 m 02 s およびdate
June, 07size
length
length
パターンを2回書かないと異なる順序でパターンを一致させる方法がわからないことを除けば、かなり近い正規表現があります。
(?<size>\d{1,3}\[.,]\d{1,2}\s+(?:Mb)?)?\s?
(?<length>(?:(?:01:)?\d{1,2}:\d{2}))?\s*
(?<date>\d{2}\.\d{2}))?
注: これは、既に正常に分岐している大きな正規表現の一部にすぎません。