我正在根据需要从外部数据库导入用户数据。虽然我将门牌号与街道名称分开,但另一个数据库却没有。
我用
preg_match_all('!\d+!')
排除数字。这适用于这样的地址行:
streetname 60
但它不适用于这样的地址行:
streetname 60/2/3
在这种情况下,我最终提取60,并且/ 2/3留在街道的名称。
不幸的是,我不是一名正则表达式专家。恰恰相反。我的问题是我不仅需要能够检测数字,还能检测斜线和连字符。
有人可以帮助我吗?
答案 0 :(得分:4)
尝试:
preg_match_all('![0-9/-]+!', 'streetname 60/2/3', $matches);
答案 1 :(得分:0)
要给出一个明确的答案,我们必须知道数据中的模式。
例如,在德国,我们有时会使用13a
或23-42
这样的门牌号,也可以写成23 - 42
一个可能的解决方案是在以数字开头的空白后匹配所有
preg_match_all('!\s(\d.*)!', 'streetname 60/2/3', $matches);
但是,如果你有像13street
这样的街道的美国数据,那么这会产生误报