2016-03-11 3 views
0

Я пытаюсь разделить голландский адрес, но я как бы застрял.Regex, чтобы разделить голландский адрес

Проблема в том, что на улицах Нидерландов могут быть номера в них.

$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"; 

Это wil игнорирует «имя3».

Наверное, я пытаюсь снять последние цифры и дополнительную букву. Может ли кто-нибудь помочь мне исправить это?

Пример входа:

name3 улица 22а

улица 3

улица 3а

др. улица 24а

+0

Вы имеете в виду просто найти последнее вхождение и заменить ничего [как это] (https://regex101.com/r/jM2cA3/2)? –

ответ

0

Я предполагаю, что я пытаюсь содрать последние цифры и опциональное письмо.

Это может быть выполнено с помощью следующего регулярного выражения.

Regex:(?:\d+[a-z]*)$

Объяснение: Он ищет number с последующим дополнительным letter.

Замена: Заменить на nothing.

Regex101 Demo

Смежные вопросы