我尝试使用grep匹配精确的子字符串。我使用以下表达式:
grep("^.*apple().*$",inputString)
预期产出:
1)输入字符串为"apple()"
- 预计匹配
2)输入字符串为"appleSomethingElse()"
- 预计不匹配
案例1有效,我得到一个匹配。但是案例二也匹配。我正在尝试编写一个只在" apple"和"()"在字符串中彼此相邻。我的表情错了吗?
答案 0 :(得分:4)
当你的表达式中有metacharacters时,你可以简单地使用fixed = TRUE
中的grep
参数,从而使你的表达式变得简单。
x <- c('apple()', 'appleSomethingElse()', 'adadaapple()aaa')
grep('apple()', x, fixed = TRUE)
## [1] 1 3
答案 1 :(得分:2)
我们需要转义(\\
)括号(()
)以使用与OP代码中相同的语法来完成此工作。
grep("^.*apple\\(\\).*$", x)
#[1] 1 3
正如@DavidArenburg在评论中提到的,如果这是用于匹配字符串而不是子字符串,==
会更有用。
x=='apple()'
#[1] TRUE FALSE FALSE
x <- c('apple()', 'appleSomethingElse()', 'adadaapple()aaa')