アドレスの末尾にある唯一の # を抽出しようとしていますが、特定の指定の後ではない場合に限ります。
私がテストしている正規表現は次のとおりです。
/(?<!apt|appt|appartment|ste|suite|box)[,.]? ?# ?([0-9]+)$/i
この場合、正規表現は失敗するはずです。
123 W Somewhere St Apt # 321
正規表現はこれで一致を見つける必要があります:
123 W Somewhere St # 321
ただし、上記の両方に一致します。
[,.]? ?# ?
シンプルに変更するとうまくいくことがわかりました#
。
ただし、これは単にスペースを削除したり、アドレスにピリオドを追加したりするだけでは無効になることを意味します。
この場合、否定的な後読みを機能させ、正規表現を柔軟に保つにはどうすればよいですか?
PHP 5.3 で実装されました。