简单的PHP正则表达式街道地址 - 完美不需要

时间:2013-11-01 20:57:43

标签: php regex

因此,我已经连续三天使用PHP脚本工作,该脚本可以从各州获取各种银行信息。除了地址的开头,我正在拉的所有单一值都可以使用。

这不一定是完美的,我正在刮掉>和<符号使它更容易。这些是我需要匹配的例子。事实上我写了一些代码来剥离大于和小于字符的代码 - 请注意我只对地址结束感兴趣:Way,Street,St.,St,Avenue,Ave,Ave.,Road,Rd, Rd。,Highway,Hwy,Hwy,Boulevard,Bvd,Bvd。,Crescent,Cres。,Cres等。

         >20 Cross Street<
         >1 Dillinger Avenue<
         >189 Beautiful Way<
         >5768 Some Longer Address That Is Crazy Like Ave.<
         >857489 Monkey On My Back Highway<
         >378 My Pants Are Ablaze Boulevard<

这是我到目前为止所拥有的;

     '~>[0-9]{1-7}.*\s[Street|St.|St|Road|Rd|Rd.]<~'

4 个答案:

答案 0 :(得分:1)

使用{1-7}以昏迷{1,7}

取消点数并替换短划线
[0-9]{1,7}.*\s(?:Street|St\.|St|Road|Rd|Rd\.)

答案 1 :(得分:0)

你需要做出至少一个重要的改变和一些小的改变:

'~>[0-9]{1,7}.*\s(?:Street|St\.?Road|Rd\.?)<~'
                 ^^                          ^

在你的表达式中,你使用了一个字符类,这是错误的,因为字符类中的所有内容都是字面意义的,它是一组字符,而不是单词。

{1-7}错误,{1,7}用于匹配之前1到7次之间的内容。

此外,您无法直接使用.,因为它们具有特殊含义,因此您需要像\.一样转义它们。

换句话说,[Street|St.|St|Road|Rd|Rd.]匹配单个字符而不是整个单词,它甚至可以匹配|。{/ p>

答案 2 :(得分:0)

如果您要查找包含列表中任何字符串的任何地址,则必须将其定义为“匹配模式”的一部分。

你可以使用preg_match()函数,如果找到匹配则返回1,否则返回0。

匹配模式的示例列表可以是:

/Street|St.*|Way|Avenue/等。

答案 3 :(得分:0)

这不是正则表达式,但可以解析街道地址?

Parse A Steet Address into components

即使这不能解决您的问题,正则表达式也是此问题的错误解决方案,您需要解析器或语法。比正则表达更复杂的东西。

你会疯狂地试图用正则表达式来解决这个问题。