2016-02-21 3 views
1

Я использую регматики для извлечения только прописных букв из кода, но «» заменяет все строчные буквы и цифры. Есть ли способ просто извлечь заглавные буквы и не иметь ""?R: Использование регматий для извлечения определенных символов

code <- c("clcopCow1zmstc0d87wnkig7OvdicpNuggvhryn92Gjuwczi8hqrfpRxs5Aj5dwpn0TanwoUwisdij7Lj8kpf03AT5Idr3coc0bt7yczjatOaootj55t3Nj3ne6c4Sfek.r1w1YwwojigOd6vrfUrbz2.2bkAnbhzgv4R9i05zEcrop.wAgnb.SqoU65fPa1otfb7wEm24k6t3sR9zqe5fy89n6Nd5t9kc4fE905gmc4Rgxo5nhDk!gr") 

regmatches(code, gregexpr('[[:punct:]]*[[:upper:][:punct:]]*', code)) 
+0

Какой выход вы ожидаете? '[[: punct:]] * [[: upper:] [: punct:]] *' соответствует ноль или более символов пунктуации, за которыми следуют буква в верхнем регистре (1 вхождение), за которым следуют ноль или более символов пунктуации - он не может сравниться больше чем 1 кусок письма. –

+0

Надеюсь получить только заглавные буквы, поскольку это встроенное сообщение – danielhong

ответ

2
gsub("[^A-Z]", "", code) 
# [1] "CONGRATULATIONSYOUAREASUPERNERD" 
+0

, чем вы за помощь! – danielhong

2

[^A-Z] хорошо, но [^[:upper:]] немного лучше, так как она не будет ввернут в своеобразных местах.

gsub("[^[:upper:]]", "", code) 

Для немного лучшей читаемости (но, возможно, избыточна для данного примера) вы можете захотеть stringr::str_extract, но я не совсем уверен, как это сделать чисто:

library(stringr) 
str_c(str_extract_all(code,"[[:Lu:]]+")[[1]],collapse="") 
Смежные вопросы