让我们说我在R中有一个字符串:
str <- "abc abc cde cde"
然后我使用regmatches和gregexpr来查找我的字符串中有多少个“ b”
regmatches(str, gregexpr("b",str))
但是我想要包含字母b的所有内容的输出。 这样的输出是:“ abc”,“ abc”。
谢谢!
答案 0 :(得分:3)
tmp <- "abc abc cde cde"
grep("b", unlist(strsplit(tmp, split = " ")), value = TRUE)
答案 1 :(得分:1)
查找前后的非空格,例如:
regmatches(str, gregexpr("\\S*b\\S*", s))
# [[1]]
# [1] "abc" "abc"
特殊的正则表达式字符记录在?regex
中。在这种情况下,\\s
匹配“任何空格字符”,而\\S
是其否定符,因此,任何非空格字符都将匹配。您可以更具体一些,例如\\w
(“单词”字符,与[[:alnum:]_]
相同)。 *
表示等于或大于零,而+
表示等于或大于零(强制执行某些操作)。
答案 2 :(得分:0)
答案 3 :(得分:0)
这是使用strsplit
和grepl
的基本R选项:
str <- "abc abc cde cde"
words <- strsplit(str, "\\s+")[[1]]
idx <- sapply(words, function(x) { grepl("b", x)})
matches <- words[idx]
matches
[1] "abc" "abc"