r - 有没有办法选择性地应用这个 stringr 函数?
问题描述
我有一个用户数据框,其中一列包含他们自我报告的位置。因此,报告的某些位置是无意义的,但在将此列与已知位置的其他列匹配时可能会导致误报。以下是数据框的示例。
data <- data.frame(X = (1:5), Y = c("", "Washington, DC", "Huntsville, AL", "Mobile,AL", "ALL OVER"))
有了这些数据,然后我运行下面的代码来建立与AL
.
library(stringr)
data$match_ab <- str_extract(data[,2], str_c("AL", collapse = "|"))
这导致 Huntsville 和 Mobile 被正确识别为正数,但第三次匹配ALL OVER
错误地识别为匹配,因为AL
在字符串内。
有没有办法调整这个脚本,以便它检测字符串s 中的匹配项,同时忽略在字符串的所需部分附加了字母的字符串?换句话说,AL
如果字母字母与字符串相邻,这是否可以检测到部分字符串的任一侧可能存在空格或标点符号而忽略匹配?
提前致谢。
解决方案
如果我理解正确的话,这对你有用吗:
data$match_ab <- str_extract(data[,2], "\\bAL\\b")
使用\\b
which 是一个边界条件,因此如果它后面/前面有一个单词或根据文档,它不匹配任何内容:符号 \b 匹配单词任一边缘的空字符串
推荐阅读
- svg - feImage xlink:href svg 源与 png 相比模糊
- javascript - 动态创建时多次调用的事件处理程序
- three.js - THREE.JS 阴影不投射 - 聚光灯
- html - Css 背景颜色不透明度
- jquery - 速度模板 - “#foreach”循环中没有“#break”
- php - 模型的 save() 方法上的 Inflector.php 第 265 行中的 FatalErrorException
- google-colaboratory - Google Colab 在尝试解压缩大文件后冻结
- sql - 查询优化 PostgreSQL (GreenPlum)。根据排名前 5 位的结果进行分组
- c - 一次将一系列字符存储在 char 数组中
- algorithm - 在表中查找排序顺序