str_extract_all-仅从列表中查找确切的字符串

时间:2019-05-07 19:11:53

标签: r stringr

我想使用str_extract_all从包含错误描述的电子表格的许多列中提取特定的文本字符串。样本列表:

fire_match <- c('fire', 'burned', 'burnt', 'burn', 'injured', 'injury', 'hurt', 'dangerous', 
  'accident', 'collided', 'collide', 'crashed', 'crash', 'smolder', 'flame', 'melting', 
  'melted', 'melt', 'danger')

我的代码在技术上可以实现预期的功能,但是我也正在从“ misfire”中提取“ fire”。这是不正确的。我也很难提取不区分大小写的结果。

这是一个让我90%达到目标的直接示例:

fire$Cause.Trigger <- str_extract_all(CAUSE_TEXT, paste(fire_match, collapse="|") )

我想要的结果是:

CAUSE_TEXT <- c("something caught fire", "something misfired", 
  "something caught Fire", "Injury occurred")
  • 着火了->火了
  • 放错了东西->不适用
  • 着火了->火了
  • 发生了伤害->受伤

1 个答案:

答案 0 :(得分:2)

您只需在个人条款中添加\b,以确保它们与单词边界匹配。

pattern <- paste0("\\b", paste(fire_match , collapse="\\b|\\b"), "\\b")
str_extract_all(CAUSE_TEXT, regex(pattern, ignore_case = TRUE))
# [[1]]
# [1] "fire"
# [[2]]
# character(0)
# [[3]]
# [1] "Fire"
# [[4]]
# [1] "Injury"