正则表达式在R中查找具有特定模式的字符串

时间:2014-08-17 23:20:27

标签: regex r

我在这里有一些字符串,它们是:

12ABC3, 2ABC45, ABC 56, uhyABC, REGEXP ...

目标是只要字符串中有'ABC'(不是'BCA'或'BAC'),使用'grepl'时它应该返回TRUE

所以输出应该是

TRUE, TRUE, TRUE, TRUE, FALSE

有人可以帮我吗?

提前致谢

3 个答案:

答案 0 :(得分:5)

您希望在致电fixed = TRUE时使用grepl

> x <- c("12ABC3", "2ABC45", "ABC 56", "uhyABC", "REGEXP", "BCA", "CAB")
> grepl("ABC", x, fixed = TRUE)
# [1]  TRUE  TRUE  TRUE  TRUE FALSE FALSE FALSE

fixed参数定义是

  

逻辑。如果为TRUE,则pattern是要按原样匹配的字符串。覆盖所有冲突的参数。

答案 1 :(得分:3)

您可以使用以下内容。

> x <- c('12ABC3', '2ABC45', 'ABC 56', 'uhyABC', 'REGEXP')
> grepl('ABC', x, fixed=T)
# [1]  TRUE  TRUE  TRUE  TRUE FALSE
> x[grepl('ABC', x, fixed=T)]
# [1] "12ABC3" "2ABC45" "ABC 56" "uhyABC"

答案 2 :(得分:1)

这个表达式怎么样:\w*ABC[\w\s]*

Online Demo

\w*匹配任何字词[a-zA-Z0-9_] *都会使其匹配从0到无限次。

\w\s]*匹配任何单词字符[a-zA-Z0-9_ ],此单词包含您的第四个表达式中的空格,*将使其匹配从0到无限次。