つまり、基本的に、この巨大な正規表現パターンがあり、その中間のどこかに式があります(?:\s(\d\d\d)|(\d\d\d\d))
。解析のこの部分では、スペースに続く 3 桁または 4 桁のいずれかをキャプチャしたいのですが、全体を括弧で囲むことによるキャプチャは必要ありません (?:
キャプチャ以外のものは作成しません)。 )。「または」ロジックが機能するように、括弧を使用する必要があります(と思います)。
したがって、潜在的な入力例は次のようになります...
- input1= Giantexpression 123文字以上
- input2= Giantexpression1234blahblahblah
試し(?:\s(\d\d\d)|(\d\d\d\d))
てみたところ、少なくとも4桁の場合は追加のキャプチャが得られました。それで、私はこれを正しくやっていますか、それともどこかでめちゃくちゃになっていますか?
編集:
さらに詳しく説明すると、現在使用している正規表現は次のとおりです。
pattern = @".?(\d{1,2})\s*(\w{2}).?.?.?(?:\s(\d\d\d)|(\d\d\d\d)).*"
最初に少し解析する必要があります。「または」を使用する必要がないため、ショーン・ジョンソンの答えはまだ機能すると思います。しかし、「または」を使用する方法はありますか?その能力はいずれ必要になると思います。