1

アドレスの末尾にある唯一の # を抽出しようとしていますが、特定の指定の後ではない場合に限ります。

私がテストしている正規表現は次のとおりです。

/(?<!apt|appt|appartment|ste|suite|box)[,.]? ?# ?([0-9]+)$/i

この場合、正規表現は失敗するはずです。

123 W Somewhere St Apt # 321

正規表現はこれで一致を見つける必要があります:

123 W Somewhere St # 321

ただし、上記の両方に一致します。

[,.]? ?# ?シンプルに変更するとうまくいくことがわかりました#

ただし、これは単にスペースを削除したり、アドレスにピリオドを追加したりするだけでは無効になることを意味します。

この場合、否定的な後読みを機能させ、正規表現を柔軟に保つにはどうすればよいですか?

PHP 5.3 で実装されました。

4

1 に答える 1

1

この状況では後読みを使用できませんが (オプションのコンテンツが後にあります)、次の代替手段を使用できます。

/(?!\b(?:apt|appt|appartment|ste|suite|box))\b\w+[,.]? ?# ?\K[0-9]+/i

\K前にすべての試合をリセットします。

于 2013-10-17T12:55:58.283 に答える