使用grep代替“或”代替“或”

时间:2017-05-05 11:16:02

标签: r regex grep

我有一个网址列表:

urls <- c("xx.zip", "zx.zip", "zz.rar")

我可以找到所有这样的zip文件:

zlst <- grep("zip", urls)
zls <- urls[zlst]
zls 
[1] "xx.zip" "zx.zip"

如果我想找到所有文件,包括“z”和“zip”,我该怎么做。如果它是“z”或“zip”我可以使用|,但它不适用于&amp;。

zlst <- grep("z&zip", urls)
zls <- urls[zlst]
zls

character(0)

通缉输出:

[1] "zx.zip"

2 个答案:

答案 0 :(得分:3)

您可以指定可能的外观顺序。只有两个字符串,这不是什么大问题:

grep("z.*zip|zip.*z", urls, value = TRUE)
# [1] "zx.zip"

在单个正则表达式模式中,没有直接指定逻辑AND运算符的方法,如OR运算符|

答案 1 :(得分:0)

也许,在^开头(z)和$开头(zip)匹配:

grep("^z.*zip$", urls, value = TRUE)
# [1] "zx.zip"