有没有办法将两个术语传递给grep进行搜索?
想象一下,我想在包含"五"和"六"的对象中找到项目,即"五"和"六".
grep("five" & "six", object)
Run Code Online (Sandbox Code Playgroud)
这不起作用,我知道有OR的符号.
您可以grepl用来确定哪些元素符合这两个条件,然后将它们编入索引.
id <- grepl("five", object) & grepl("six", object)
object[id]
Run Code Online (Sandbox Code Playgroud)
您需要使用基于正则表达式的正向前瞻断言.由于外观是PCRE功能,因此您必须进行设置perl=TRUE.
grep("^(?=.*five)(?=.*six)", object, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
要么
grep("^(?=.*\\bfive\\b)(?=.*\\bsix\\b)", object, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
要么
grep("^(?=.*\\bfive\\b).*\\bsix\\b", object, perl=TRUE)
Run Code Online (Sandbox Code Playgroud)
例:
> x <- c("five six bar", "five", "six")
> grep("^(?=.*\\bfive\\b)(?=.*\\bsix\\b)", x, perl=TRUE)
[1] 1
Run Code Online (Sandbox Code Playgroud)
不先行需要做到这一点,你可以使用交替的情况下操作.
grep('five.*six|six.*five', object)
Run Code Online (Sandbox Code Playgroud)
如果你知道"五"将在"六"之前,你甚至不需要替代方案:
grep('five.*six', object)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |