もう一度編集して、より明確にしようとします。
この php 正規表現パターンは、「wordA」または「wordB」で分割された文字列の 2 つの部分である常に 2 つの値を含む一致配列を提供します。文字列にこれらの単語が含まれていない場合は、最初の配列として文字列を返し、2 番目の配列で null を返すだけです。
例:
preg_match("pattern","foo wordA bar",$match), $match will contain array['foo', 'bar']
preg_match("pattern","foo wordB bar",$match), $match will contain array['foo', 'bar']
preg_match("pattern","foo bar test",$match), $match will contain array['foo bar test', null]
$match の最初の値は常に文字列であることを知っているので、書きません。
古い質問:
1 行のアドレスを部分に分割する必要があります。通りの部分をキャプチャする方法が見つかりませんが、APP または APT という単語が存在する場合は含めず、存在する場合はその後の単語をキャプチャします。
例えば:
「5847A, rue Principal APP A」は一致する必要があります: (5847, A, rue Principal,A)
「5847A, rue Prince Arthur APT 22」は一致する必要があります: (5847, A, rue Prince Arthur, 22)
「1111, シャーウッド ストリート」は一致する必要があります: (1111, , シャーウッド ストリート, )
私はPHPを使用しています。
私がこれまでに持っているのは/^(\d+)(.*), (.*)(?:APP|APT)(?:\s*(.*))?$/i
、例 1 と 2 を使用したものです。その後、3 番目の一致には APP または APT という単語が含まれます...
オプションおよび代替のAPPまたはAPT単語を一致から除外する方法はありますか?
ありがとうございました
編集:
問題を単純化できます。文字列を正規表現して、一致が同じ文字列からAPPまたはAPTという単語を差し引いたものを返すにはどうすればよいですか。