正则表达式PHP,查找特定位置的字符

时间:2015-10-05 13:38:48

标签: php regex

我解释了我的问题:我正在研究不同类型的地址

" 25 Down Street 15000 London "

" 25 B Down Street 15000 London "

" Building A 25 Down Street 15000 London "

我找到了一种方法来确定这个正则表达式在所有情况下街道的数量:

 `^([1-9][0-9]{0,2}(?:\s*[A-Z])?)\b`

但现在我遇到了一个我无法解决的问题,我需要在案例真实时确定街道号码之前的字符。

示例:“建筑2 25 Down Street 15000 London”我需要在这里找到“Building 2”

据我所知,我必须在此字符串的第一个数字之前找到字符。

继续自己搜索,但如果有人为我找到解决方案,那将会很棒。

谢谢。

现在编辑我的代码是:

preg_match('/^(.*?)\d+\s+\D+/', $cleanAdressNode, $result, PREG_OFFSET_CAPTURE,0);
        print $result[0][0];

        return $result[0][0];

现在的结果是:RésidenceLesThermes 1 15 boulevardJeanJaurès而不仅仅是:RésidenceLesThermes 1

2 个答案:

答案 0 :(得分:1)

怎么样:

preg_match('/^(\D*)/', $str, $match);

您会在$match[1]中找到字符串开头不是数字的所有内容。

根据你的例子:

preg_match('/^(.*?)\d+\s+\D+/', $str, $match);

答案 1 :(得分:0)

如果您只想匹配第一个非数字字符,^([^0-9]*)应该可以解决问题。它使用类否定来获取字符串开头的每个非数字字符。