R Grep help:匹配精确的子串。 Mac OSX上的RStudio

时间:2015-08-23 08:26:53

标签: regex r

我尝试使用grep匹配精确的子字符串。我使用以下表达式:

grep("^.*apple().*$",inputString)

预期产出:

1)输入字符串为"apple()" - 预计匹配

2)输入字符串为"appleSomethingElse()" - 预计不匹配

案例1有效,我得到一个匹配。但是案例二也匹配。我正在尝试编写一个只在" apple"和"()"在字符串中彼此相邻。我的表情错了吗?

2 个答案:

答案 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')