我解释了我的问题:我正在研究不同类型的地址
" 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
答案 0 :(得分:1)
怎么样:
preg_match('/^(\D*)/', $str, $match);
您会在$match[1]
中找到字符串开头不是数字的所有内容。
根据你的例子:
preg_match('/^(.*?)\d+\s+\D+/', $str, $match);
答案 1 :(得分:0)
如果您只想匹配第一个非数字字符,^([^0-9]*)
应该可以解决问题。它使用类否定来获取字符串开头的每个非数字字符。