次の数を取得するために、同じ正規表現内の複数の入力を一致させようとしています。
入力が最初のグループと一致しない場合は、以前のすべてのキャプチャグループがグループと一致しないにもかかわらずキャプチャされているため、問題が発生します。アサーションを使用する必要があると思いますlookaround
が、私はそれらに精通していません。
サンプル入力:
wordA 123456
wordA: 123456
wordA : 123456
wordA R123465
wordA: R123456
wordA : R123456
wordB R123465
WordAにはオプション:
と。の両方がありますR
。これまでのところ私はこれを持っています:/(?:wordA :?R?(\d+)|wordB R(\d+))/i
。
最後のサンプル入力を使用すると、次の結果が得られます。
array
0 => string 'wordB R123456' (length=13)
1 => string '' (length=0)
2 => string '123456' (length=6)
求められる結果は次のとおりです。
array
0 => string 'wordB R123465' (length=13)
1 => string '123456' (length=6)
修正する方法はありますか?