PHP:用于获取地址中路线的正则表达式


PHP: Regex for getting directions in an address

我有这个示例地址:

405 W 1st Street South West #910

我有这个正则表达式来提取具有单词北、南、西、东、东北、西北、东南、西南的地址的可能性:

preg_match_all("/(?:(?:north|south)(?:[ ](?:east|west))?|east|west)/i", $address, $match);

现在,如果我们看一下上面的地址字符串,"W"被认为是西方,所以甚至可以有N,S,NW,NE,SE,SW,E,W。所以我们也需要提取这些。

我不太擅长正则表达式,希望你能帮忙?谢谢!

您可以使用

'b(?:north|south)(?:'h*(?:east|west))?'b|'b(?:east|west|[NS][WE]?|[EW])'b

查看演示

解释

  • 'b - 前导词边界
  • (?:north|south) - northsouth
  • (?:'h*(?:east|west))? - 出现零个或零个或多个水平空格 ('h*),后跟 eastwest
  • 'b - 尾随词边界
  • | - 或...
  • 'b - 前导词边界
  • (?:east|west|[NS][WE]?|[EW]) - eastwestNNWNESSWSE
  • 'b - 尾随词边界