正则表达式来拆分荷兰地址


Regex to split a dutch address

我正在尝试拆分荷兰地址,但我有点卡住了。

问题是荷兰街道上可能有数字。

$input_string = "name3 street 24a";
$address = "";
$number = "";
$addition = "";
$matches = array();
if(preg_match('/(?P<address>[^'d]+) (?P<number>'d+.?)/', $input_string, $matches)){
    $address = $matches['address'];
    $number = $matches['number'];
    if (preg_match('/(?P<nr>[^'d]+) (?P<addition>'d+.?)/', $number, $matches)) {
        $number = $matches['nr'];
        $addition = $matches['addition'];
    }
} else { // no number found, it is only address
    $address = $input_string;
}
echo $address . "'n";
echo $number. "'n";
echo $addition. "'n";

这将忽略"name3"。

我想我正在尝试去除最后一个数字和一个可选的字母。谁能帮我解决这个问题?

示例输入:

名称3街22A

街道 3

街道 3A

博士街 24a

我想我正在尝试去除最后一个数字和一个可选的字母。

这可以通过遵循正则表达式来完成。

正则表达式:(?:'d+[a-z]*)$

说明:它查找一个number,后跟一个可选的letter

更换要做:nothing替换。

正则表达式 101 演示