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

时间:2016-01-21 16:28:35

标签: php regex

我有这个样本地址:

  

第一街405号西南#910

我有这个正则表达式来提取一个地址的可能性,该地址有北,南,西,东,东北,西北,东南,西南:

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

现在,如果我们查看上面的地址字符串,“W”被认为是West,所以甚至可能有N,S,NW,NE,SE,SW,E,W。所以我们还需要提取这些。

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

1 个答案:

答案 0 :(得分:3)

您可以使用

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

请参阅demo

解释

  • \b - 领先的字边界
  • (?:north|south) - northsouth
  • (?:\h*(?:east|west))? - 零个或多个水平空格(\h*)出现一次或零次后跟eastwest
  • \b - 尾随字边界
  • | - 或......
  • \b - 领先的字边界
  • (?:east|west|[NS][WE]?|[EW]) - eastwestNNWNES,{{1} },SW
  • SE - 尾随字边界