r - 如何通过考虑多词在文本中的位置来挖掘多词?
问题描述
我想提取给定文本中位于年份和以下逗号之间的某些单词。尽管该术语Mining
出现在 in 之前和之后2020
,但我需要在andtext
之间找到的后一个。相同的概念适用于以下术语。(2020)
,
Computer Science
text
library(stringr)
text <- "This is text Mining exercise (2020) Mining, p. 628508; Computer Science text analysis (1998) Computer Science, p.345-355; Introduction to data mining (2015) J. Data Science, pp. 31-33"
comp <- c("Mining", "Computer Science", "J. Data Science")
pattern <- str_c(comp,collapse ="|")
data <- str_extract_all(text, pattern)
上述代码的最后一行给出了以下输出:
[1] "Mining" "Mining" "Computer Science" "Computer Science" "J. Data Science"
我正在寻找的输出是:
[1] "Mining" "Computer Science" "J. Data Science"
注意:这些词的位置很重要。非常感谢任何帮助!
解决方案
如果我们需要)
在数字之后和之间提取,
,请创建一个正则表达式环视
library(stringr)
str_extract_all(text, str_c("(?<=\\(\\d{4}\\)\\s)(", pattern, ")(?=,)"))[[1]]
#[1] "Mining" "Computer Science" "J. Data Science"
推荐阅读
- java - 扩展后如何在父类中获取 T 类型?
- javascript - 如何在 Reactjs 中使用未声明的变量
- node.js - 使用 through2-map 使用 nodejs 制作的服务器中的“结束后写入”错误
- python - 检查某个日期是否存在多对多关系,然后排除该条目
- javascript - 节点 js if/else 使用 puppeteer 无法正常运行
- c - 调用时未创建 crontab 文件
- akka - 我们可以在基于参与者的系统中拥有全局状态吗?
- azure - 如何忽略 Azure API Manager validate-jwt 策略中的特定 URL
- google-apps-script - 在宏中使用单元格的内容,如值
- django - 如何创建 django 多种用户类型