正则表达式提取美国邮政编码,但不提取假代码

2024-05-31

使用 XML 包和 XPath 从网站上抓取地址,有时我只能得到一个嵌入了我想要的邮政编码的字符串。提取邮政编码很简单,但有时会显示其他五位数字的字符串。

以下是 df 中问题的一些变体。

zips <- data.frame(id = seq(1, 5), address = c("Company, 18540 Main Ave., City, ST 12345", "Company 18540 Main Ave. City ST 12345-0000", "Company 18540 Main Ave. City State 12345", "Company, 18540 Main Ave., City, ST 12345 USA", "Company, One Main Ave Suite 18540, City, ST 12345")) 

下面是提取邮政编码(5 位数字和加 4 位数字)的 R 语句,但它被街道号码和套房号码的虚假邮政编码所欺骗(并且其他地址字符串中可能还有其他可能性)。

regmatches(zips$address, gregexpr("\\d{5}([-]?\\d{4})?", zips$address, perl = TRUE))

上一个 SO 问题的答案表明“正则表达式将返回最后一个连续的五位数字字符串。它使用负向前瞻来确保返回的字符串后不存在 5 位数字字符串。”
从地址字符串中提取邮政编码 https://stackoverflow.com/questions/21074812/extracting-a-zip-code-from-an-address-string

\b\d{5}\b(?!.*\b\d{5}\b)

但是这个问题和答案涉及 PHP 并提供了一个带有 preg_matches()` 的 if 循环,我不熟悉这些语言和工具,但这个想法可能是正确的。

我的问题:什么 R 代码会找到真正的邮政编码并忽略虚假的相似邮政编码?


这是我的第一个正则表达式答案(我仍在学习),所以希望我不会说任何错误的话来引导您走向错误的方向。

基本上,正如您在问题中暗示的那样,这个正则表达式会查找最后一个看起来像邮政编码的字符串,该字符串后面不跟有看起来像邮政编码的字符串

基本语法是pattern(?!.*pattern)上面说要匹配pattern仅当不遵循时(否定的前瞻断言,语法:(?! )) by anything .* and pattern

所以我们可以用您感兴趣的内容替换模式:

[0-9]{5}(-[0-9]{4})?

即一个数字字符串[0-9]正好 5 个字符{5}(可以选择跟随?由另一组定义为连字符和另一个长度为 4 的数字字符串(-[0-9]{4})

把它们放在一起gregexpr搜索匹配项并regmatches为了给我解释结果,我得到:

zips <- data.frame(id = seq(1, 5), address = c("Company, 18540 Main Ave., City, ST 12345", "Company 18540 Main Ave. City ST 12345-0000", "Company 18540 Main Ave. City State 12345", "Company, 18540 Main Ave., City, ST 12345 USA", "Company, One Main Ave Suite 18540, City, ST 12345")) 
regmatches(zips$address,
           gregexpr('[0-9]{5}(-[0-9]{4})?(?!.*[0-9]{5}(-[0-9]{4})?)', zips$address, perl = TRUE))

# [[1]]
# [1] "12345"
# 
# [[2]]
# [1] "12345-0000"
# 
# [[3]]
# [1] "12345"
# 
# [[4]]
# [1] "12345"
# 
# [[5]]
# [1] "12345"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式提取美国邮政编码,但不提取假代码 的相关文章

  • 将字符拆分为字母和数字

    我有一个独特的角色 每个字母后面都有一个数字 例如 A1B10C5 我想把它分成letter lt c A B C and number lt c 1 10 5 使用 R 我们可以使用正则表达式查找来分割字母和数字 v1 lt strspl
  • osmar::get_osm() 下载 OSM 数据失败时出错:SYSTEM 或 PUBLIC,缺少 URI

    我正在关注一个tutorial https journal r project org archive 2013 RJ 2013 005 RJ 2013 005 pdf关于如何使用osmar包在R中下载OSM数据 所以代码是 library
  • 更喜欢迭代器而不是指针?

    这个问题 https stackoverflow com q 29007753 2642059是一个有评论的问题here https stackoverflow com questions 28985883 pass a string re
  • R 中的波形符(~) 运算符

    根据 R 文档 运算符在公式中用于分隔公式的右侧和左侧 右侧是自变量 左侧是因变量 我了解 lm 包中何时使用 然而以下是什么意思呢 x 1 右边是1 什么意思 可以是除 1 之外的任何其他数字吗 From lm 拟合线性模型时 y x 1
  • R 中的数据转换

    我有一个包含 2 列的表格 我想根据第二列绘制值当前行之前的 5 行中第一列中的 N 个值的总和 如何在 R 中实现这种转换而无需外部预处理 Example 文件 数据 csv 7 2 4 8 3 6 7 10 9 3 0 4 8 9 3
  • R 中的 Python 链接式数据整理

    我是 Python 新手 来自 R 环境 我喜欢 R 的一件事是能够编写代码 在一个可读的代码块中对数据进行多种转换 但对我来说 在 Python 中找到这种风格的代码非常困难 我想知道你们中的一些人是否可以指导在哪里可以找到有关该特定风格
  • 字符串和数组泛型方法将来将被弃用

    在下面的链接 MDN 站点 中 它显示 字符串泛型是非标准的 已弃用 将来可能会被删除 请注意 如果不使用下面提供的填充程序 则不能跨浏览器依赖它们 他们所指的方法是否是他们在此声明下方提供的垫片中列出的方法 这是我见过的唯一对 字符串泛型
  • 将数组项合并到字符串中[重复]

    这个问题在这里已经有答案了 如何将所有数组项合并为一个字符串 Use the implode功能 http php net manual en function implode php 例如 fruits array apples pear
  • 如何将嵌套模块与传单地图一起使用

    我正在尝试使用shiny模块来构建一个应用程序leaflet地图 然而 当我运行下面的代码时 地图无法正确渲染 它呈灰色 我希望发生的是user从侧面板中选择城市 并显示地图的相关部分 问题末尾有一个使用标准闪亮来说明的示例 我认为用户输入
  • 使用具有聚类数据的小鼠进行插补

    所以我正在使用mice用于估算缺失数据的包 我是插补新手 所以我已经到了一定程度 但遇到了陡峭的学习曲线 举一个玩具例子 library mice Using nhanes dataset as example df1 lt mice nh
  • 将 geom_text 与 ggplot2 中的 geom_vline 对齐

    I used vjust作为解决方法并详细阐述 通过尝试和错误可以接受的距离 但这有时非常耗时且变化 与字体大小和轴比例 有没有更好的方法来自动对齐示例中的文本 library ggplot2 ggplot data mtcars aes
  • 将一串数字转换为数组

    我在创建将数字字符串转换为数组的程序时遇到问题 我知道这里有一个类似的问题 但我所要做的只是一组数字 例如 10 15 16 0 57 438 57 18 这是我到目前为止所拥有的 import java util Scanner publ
  • R 中数据帧的稀疏矩阵

    我有一个稀疏矩阵 Formal class dgCMatrix package Matrix with 6 slots i int 1 37674 1836 2297 108 472 1735 1899 2129 2131 5 67 p i
  • symfony2 实体验证正则表达式 a-z A-Z 0-9

    symfony2 中是否有一种内置方法可以根据经典的 a z A Z 和 0 9 规则验证字符串 在我的例子中是用户名和另一个属性 我是否必须自己在正则表达式中编写它作为自定义验证器 如果是这样 请提示在哪里查看 你应该使用原生的正则表达式
  • Java:检查数组的相等性(顺序无关紧要)

    我有两个String数组 比方说 String s1 a b c String s2 c a b 这些数组应该相等 我想以 最干净 的方式检查它们的相等性 我尝试使用Arrays equals s1 s2 但我得到了一个错误的答案 我想这个
  • 带转义引号的带引号字符串的正则表达式

    如何获取子字符串 It s big problem 使用正则表达式 s function return It s big problem 适用于 Regex Coach 和 PCRE Workbench JavaScript 测试示例 va
  • as.POSIXlt 忽略 tz 参数

    非常基本 只是不明白 tz 论点是为了什么 如果不是为了这个 dateIWantToConvert lt as Date 2013 06 01 the format of my starting object as POSIXlt date
  • 在文本文件中搜索字符串的更快方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要使用 C 在一组文本文件中搜索一个大约 13 个字符的字符串 文本文件的数量正在变化 范围在 100 1000 之间 文件大小范
  • 将 10 个字母平均分配给 200 个字母

    我有 10 个字母 a b c d e f g hi j 和 200 个从 1 到 200 的数字 具有不同数量的实例 例如五个 1 三个 2 等总共 200 个数字 我想为每个数字分配一个字母 以便每个字母具有相同的频率 因此 在本例中
  • 使用 auto.key 在晶格中符号填充颜色

    我正在使用一个情节xyplot in lattice R 15 2 格子 0 20 13 其中我想通过标记的形状来区分几个组 我需要使用一个向下的三角形 它只能作为空心符号使用 pch 25 与向上三角形不同 向上三角形可用作填充 pch

随机推荐

  • 如何确定两个文件路径(或文件 URL)是否标识 macOS 上的同一文件或目录?

    想象一下 macOS 上两个路径的简单示例 etc hosts private etc hosts 两者都指向同一个文件 但你如何确定这一点呢 另一个例子 Desktop Users yourname Desktop 或者在不区分大小写的文
  • 使用 Parse.com 上传视频

    我是解析新手 正在尝试保存视频并将其上传到云端 这是我正在使用的代码 但是当调用 didButtonAction 时 它不断收到错误 我相信问题出在将视频保存为文件时 但我不知道如何解决这个问题 先感谢您 void imagePickerC
  • 基本的 simpleXML 工作示例?

    看起来 PHP 中的 simpleXML 有很多问题 我在 Windows 上运行最新版本的 php 但无法让 simpleXML 的基本示例按照文档中的方式工作 我的 xml 文件是
  • 完全定制的Python帮助用法

    我正在尝试使用 Python 创建完全自定义的 帮助 用法 我计划将其导入到许多我想要具有风格一致性的程序中 但遇到了一些麻烦 我不知道为什么我的描述忽略换行符 尝试过 和 我无法让 出现在 ARGS 行的 换行符之后 显然它们坐在自己的行
  • python - 将cookie添加到cookiejar

    如何在 python 中创建 cookie 并将其添加到 CookieJar 实例 我拥有 cookie 的所有信息 名称 值 域 路径等 但我不想通过 http 请求提取新的 cookie 我尝试了这个 但看起来 SimpleCookie
  • 两个具有相同 id 的视图

    安卓如何使用R id id name膨胀 XML 后查找视图 1 假设我有两个 XML 每个按钮都有相同的 id 2 我对它们进行了膨胀并将它们转换为视图 3 R id类中只有一个int将为这两个按钮创建 android 如何区分这些具有相
  • Java JDT 解析器。获取VariableDeclarationFragment的变量类型

    我一直在用 JDT 实现 Java 解析器 但我不知道当变量的节点类型为变量声明片段 我只有在涉及到时才发现如何获取变量类型变量声明 我的代码如下 public boolean visit VariableDeclarationFragme
  • Django 1.6 的静态文件

    我花了一整天但没有任何作用 我在这里看到了至少 20 篇关于同一主题的帖子 它们各不相同 有不同的建议 但没有一个对我有用 使用 Python 2 7 运行 Django 1 6 我正在尝试从 django 教程加载民意调查应用程序的 cs
  • Angular-Datatables + Angular-xeditable:取消可编辑行

    当组合 Angular DataTables 和 Angular XEditable 时 添加新行时会取消可编辑行 这是jsfiddle https jsfiddle net faj61h5d 10 示例操作如下 1 这是初始状态 2 将第
  • 转换 SVG 过滤器

    我正在尝试创建一个像 SVG 圆圈上的阴影这样的材质设计 我希望当您单击圆圈时 这个阴影能够以良好的过渡来增长 但目前我正在努力弄清楚是否可以为这种过渡设置动画 所以我希望有人能够提供帮助 我添加了一个到目前为止所得到的小例子 一个带有阴影
  • 使用 ES6 模块导出/导入单个类方法?

    假设我有一个像这样的简单课程fileA js class foo constructor x this name x fooMethod x return x hello 我想导入并使用fooMethod in fileB js像这样 im
  • 等待运算符错误

    我的代码有问题 我怎么解决这个问题 这个问题出现在await操作符中 public MyModel HttpClient client new HttpClient HttpResponseMessage response await cl
  • 使用 argparse 指定默认文件名,但不使用 --help 打开它们?

    假设我有一个对文件执行一些操作的脚本 它在命令行上获取此文件的名称 但如果未提供 则默认为已知文件名 content txt 说 与蟒蛇的argparse 我使用以下内容 parser argparse ArgumentParser des
  • 如果文件修改日期早于 N 天

    此问题涉及在文件的修改日期早于这么多天时采取行动 我确信创建日期或访问日期会类似 但对于修改日期 如果我有 file path name to some file N 100 for example N is number of days
  • Excel,多个 IF AND 更高效的公式

    我正在制作一个电子表格 如下所示 Index Diff Exc Sym Sec Result Criteria Met 3 42 2 07 0 86 0 92 1 83 1 95 0 38 2 93 0 87 0 23 2 01 0 09
  • Eclipse:对 Java 1.7 的失望(未绑定库)

    我在全新安装的 Eclipse 中处理全新项目时遇到问题 重现步骤 下载此版本的 Eclipse http www eclipse org downloads packages eclipse ide java developers hel
  • (SQL) 识别字段中字符串格式多次出现的位置

    我需要将叙述字段 自由文本 拆分为多行 目前的格式如下 Case Reference Narrative XXXX XX 123456 Endless Text up to 50k characters 在作为文本的叙述字段中 各个条目 当
  • 如何正确设置 Azure DevOps 和 GitHub 之间的双向同步

    我想通过执行以下操作在 Azure DevOps 和 GitHub 之间创建双向同步 使用 CI 触发器创建 Azure DevOps 管道 将更改从 Azure DevOps 存储库推送到 GitHub 中的分支 创建第二个管道 用于侦听
  • 你可以关闭 Chrome devtools DOM 树列表中的滚动吗

    我不知道这是最新版本中的新功能还是我刚刚注意到它 但 Elements 面板底部的 DOM 树元素列表的滚动让我感到厌烦 提起这感觉非常荒谬 但我什至无法有效搜索 因为我不知道面板的这一部分的正式名称是什么 而且似乎没有任何偏好或实验与之相
  • 正则表达式提取美国邮政编码,但不提取假代码

    使用 XML 包和 XPath 从网站上抓取地址 有时我只能得到一个嵌入了我想要的邮政编码的字符串 提取邮政编码很简单 但有时会显示其他五位数字的字符串 以下是 df 中问题的一些变体 zips lt data frame id seq 1