-2

もう一度編集して、より明確にしようとします。

この 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という単語を差し引いたものを返すにはどうすればよいですか。

4

3 に答える 3