Вот еще один шаблон в качестве альтернативы:
> gsub("(\\.*)\\s+#.*", "\\1", person)
[1] "mike smith" "John johnson" "jeff johnson"
В приведенном выше регулярном выражении (\\.*)
будет соответствовать подгруппе любых символов перед пробелом (\\s+
), следующим за символом #
и следующимчем угодно.Тогда \\1
указывает, что gsub
должен заменить всю исходную строку этой подгруппой (\\.*)
Более простой способ получить желаемый результат:
> gsub("\\s+#.*$", "", person)
[1] "mike smith" "John johnson" "jeff johnson"
Приведенное выше регулярное выражение \\s+#.*$
указывает, что все, состоящее из пробела (\\s+
), символа #
и всех остальных до конца строки (\.$
), должно быть удалено.
Использование str_extract_all
из пакета stringr
> library(stringr)
> str_extract_all(person, "[[a-z]]+", simplify = TRUE)
[,1] [,2]
[1,] "mike" "smith"
[2,] "ohn" "johnson"
[3,] "jeff" "johnson"
Также вы можете использовать:
library(stringi)
stri_extract_all(person, regex="[[a-z]]+", simplify=TRUE)