使用php regex获取街道名称和地区的ID

时间:2013-06-25 16:58:36

标签: php regex

我需要获取ID,我有一些街道或道路或广场的名称以及某个地区或地方的名称......所以我需要从字符串中获取id,其中我有word1和word2。

我正在尝试这个:

<?php
$pattern = '~^(?<id>\\S)\\t+[name1qaz]+[\\w\'-]+[\\w\'-]+[name2asd]+[\\w\'-]~mi';
$subject = '1 name1qaz avenue (name2qwe region) 
2 name1wsx road (name2asd region) 
3 name1edc street (name2zxc region) 
4 name1qaz square name2asd place 
5 name1wsx avenue (name2qwe region) 
7 name1edc street (name2zxc place) 
8 name1qaz road name2zxc region 
9 name1wsx square (name2asd region)';
$result = preg_match( $pattern, $subject , $matches );
echo $result;
print_r($matches);
?>

结果我收到空数组

2 个答案:

答案 0 :(得分:0)

你的正则表达式错了。使用此:

$pattern = '~^(?<id>\d+)\s+name1qaz\s+(?=.*?name2asd\b)~mi';

现场演示:http://ideone.com/g4qxDV

答案 1 :(得分:0)

$pattern = '~([0-9]+)[ ]?([a-zA-Z0-9]+)[ ]?([a-zA-Z0-9]+)[ ]?\(([a-zA-Z0-9]+)[ ]?([a-zA-Z]+)\)~';

preg_match_all($patterm, $subject, $matches);

print_r($matches);

我有点失去阅读你的模式,所以我写了我要做的事情来匹配你的字符串中的行。我不是100%关于您是否希望将所有信息作为单个值返回,因此我在结果数组中的空格之间包含了所有单词/数字。