php - 用于匹配单行标准 USPS 地址的 RegEx
问题描述
我正在学习如何从一串数据中提取数据以定义为变量并根据需要使用。我每次解析的数据源都是标准的电子邮件,地址每次都是完全相同的标点和格式。唯一的区别是有时邮政编码可能是 9 位代码。
123 Riverview Pkwy, Orlando, FL 55556
123 Riverview Pkwy, Orlando, FL 55556-1234
我能够像这样提取城市:
preg_match('/, (.*?)\,/', $xaemailpaste, $insuredcity1);
$insuredcity = $insuredcity1[1];
这将完美地返回“奥兰多”,但我无法获得地址、州或邮编。有人可以帮我用正则表达式为每个组件分配变量吗?
$streetaddress = 123 Riverview Pkwy
$city = Orlando
$state = FL
$zip = 55556
我在正则表达式方面取得了一些成功,我很高兴能了解更多信息,但我花了 2 天时间尝试一些东西并查找要尝试的东西,但我无法让表达式恰好满足我的确切需求。
解决方案
此 RegEx可能会帮助您将地址分组,您可以在其中简单地提取列出的变量:
([0-9]+)\s([A-Za-z0-9\-\s]+)\,\s([A-Za-z\s]+)\,\s([A-Z]{2})\s([0-9\-]{5,10})
如果您愿意,您可以使用此 RegEx 并创建额外的边界。它目前有五个组()
,其中组$2
是$5
您的目标变量。
推荐阅读
- php - CakePhp 3中无法识别模型中的函数
- javascript - 在 odoo 中添加 npm pckage
- remote-desktop - Blue Prism - 尝试在远程桌面中运行自动化
- javascript - 如何分析 Closure Compiler 包大小
- kibana - 在 Kibana 中使用 Vega-lite 创建箱线图
- c# - 遍历目录并附加到文件
- c++ - 管理字符串文字的最佳实践
- http - Are there official names sub parts of a full url?
- sorting - Magento 1:我在产品中添加了自定义属性,但是在收集它时会打印未知列
- regex - REGEX 表达式忽略字符串中的一部分