按模式搜索文本 - 正则表达式

时间:2017-06-14 15:34:29

标签: r grep

我想在我的数据库中找到一些文本模式。 我有一个职位名称栏(数据分析师,数据科学家等),我试图查找具有某些职称的所有记录。我一直在使用以下代码:

grepl(".*Data.*Analyst.*, data$jobtitle, ignore.case = T)

效果很好,但它没有覆盖关键字的相反顺序 - "分析师数据"或"科学家数据"。

理想情况下,我很乐意搜索"数据"和"分析师"无论标题中关键字的位置如何..

1 个答案:

答案 0 :(得分:1)

如果您想以任何顺序检查是否存在关键字“数据”和“分析师”,您可以使用正向前瞻:

grepl("(?=.*analyst)(?=.*data)",data$jobtitle,perl=T,ignore.‌​case=T)

如果两个单词都存在,无论顺序或是否存在其他单词,都将返回true:

grepl("(?=.*analyst)(?=.*data)",c("Analyst data","Data Analyst","Data scientist","Analyst Science data"),perl=T,ignore.case=T)
[1]  TRUE  TRUE FALSE  TRUE