[英]Regex PHP , find words in specific location
大家好,这是问题所在:
我得到了一个经典的地址: 25 Park Street 15000 **My city**
。
我正在寻找一个正则表达式,只能找到这个地址中的城市。
我已经完成了它,我发现了一些好东西: [^ ]*$
问题是这个正则表达式只取我的字符串的最后一个字,我的城市可能有更多的单词ex: **New York**
。
我知道我必须在邮政编码后找到所有字符。
继续搜索,但也许你可以帮助我!
谢谢
假设数字不能出现在城市名称中,您可以使用\\d\\s*(\\D+)$
regex将最后一位数字与可选空格匹配,然后匹配并捕获所有其他字符直到字符串末尾。
\d\s*(\D+)$
请参阅正则表达式演示
IDEONE演示 :
$str = "25 Park Street 15000 My city";
preg_match('/\d\s*(\D+)$/', $str, $matches);
print_r($matches[1]);
另一种选择(稍微复杂一点)是试图找到城市名称的常见模式。 假设它可能包含空格,连字符和单撇号,您可以尝试另一种正则表达式 :
'/[\p{L}\p{M}]+(?:[- \'][\p{L}\p{M}]+)*$/u'
这里, \\p{L}
匹配任何Unicode字母, \\p{M}
变音符号, [- ']
将匹配连字符或空格或单个撇号。
preg_match('/[\p{L}\p{M}]+(?:[- \'][\p{L}\p{M}]+)*$/u', $str, $matches);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.