Получить символы после и до сопоставления с образцом в R - PullRequest
0 голосов
/ 23 декабря 2018

Допустим, у меня есть строка в R:

str <- "abc abc cde cde"

, и я использую regmatches и gregexpr, чтобы найти, сколько "b" есть в моей строке

regmatches(str, gregexpr("b",str))

но я хочу вывод всего, что содержит букву б.Так что вывод наподобие: "abc", "abc".

Спасибо!

Ответы [ 4 ]

0 голосов
/ 23 декабря 2018
tmp <- "abc abc cde cde"

Разделить строку на отдельные элементы, grep для "b", возвратные элементы:

grep("b", unlist(strsplit(tmp, split = " ")), value = TRUE)
0 голосов
/ 23 декабря 2018

Полагаю, вы хотите найти слов , содержащих b.Одно регулярное выражение, которое делает это:

\w*b\w*

\w* соответствует 0 или более символам слова, то есть z, AZ, 0-9 и символу подчеркивания.

Demo
0 голосов
/ 23 декабря 2018

Вот базовая опция R с использованием strsplit и grepl:

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"
0 голосов
/ 23 декабря 2018

Поиск без пробелов до и после, что-то вроде:

regmatches(str, gregexpr("\\S*b\\S*", s))
# [[1]]
# [1] "abc" "abc"

Специальные символы регулярного выражения задокументированы в ?regex.В этом случае \\s соответствует «любому символу, подобному пробелу», а \\S - его отрицание, поэтому любой символ, не являющийся пробелом.Вы можете указать более конкретно, например, \\w (символ «слово», такой же, как [[:alnum:]_]).* означает ноль или более, а + означает один или более (что-то принудительное).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...