我有这个样本地址:
第一街405号西南#910
我有这个正则表达式来提取一个地址的可能性,该地址有北,南,西,东,东北,西北,东南,西南:
preg_match_all("/(?:(?:north|south)(?:[ ](?:east|west))?|east|west)/i", $address, $match);
现在,如果我们查看上面的地址字符串,“W”被认为是West,所以甚至可能有N,S,NW,NE,SE,SW,E,W。所以我们还需要提取这些。
我不太擅长正则表达,希望你能帮忙吗?谢谢!
答案 0 :(得分:3)
您可以使用
\b(?:north|south)(?:\h*(?:east|west))?\b|\b(?:east|west|[NS][WE]?|[EW])\b
请参阅demo
解释:
\b
- 领先的字边界(?:north|south)
- north
或south
(?:\h*(?:east|west))?
- 零个或多个水平空格(\h*
)出现一次或零次后跟east
或west
\b
- 尾随字边界|
- 或...... \b
- 领先的字边界(?:east|west|[NS][WE]?|[EW])
- east
,west
,N
,NW
,NE
,S
,{{1} },SW
SE
- 尾随字边界