我有这个示例地址:
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)
-north
或south
-
(?:'h*(?:east|west))?
- 出现零个或零个或多个水平空格 ('h*
),后跟east
或west
-
'b
- 尾随词边界 -
|
- 或... -
'b
- 前导词边界 -
(?:east|west|[NS][WE]?|[EW])
-east
、west
、N
、NW
、NE
、S
、SW
、SE
-
'b
- 尾随词边界