Re: [問題] 正則表示式 regex in R
※ 引述《cywhale (cywhale)》之銘言:
: [問題類型]:
:
: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來)
:
: 若一字串的開頭與結尾只想留下英文字,我寫
: gsub("^[^a-zA-Z]+|[^a-zA-Z]+$", "", x)
: 但若結尾是"sp." or "spp." 我想保留"." 這個符號不被上面這個式子濾掉
: 比如 "aaa bbb sp." 就維持原字串
: 但其他情況的"."應該要被濾掉 比如 "aaa bbb22." -> "aaa bbb"
: 試了一些?: ?! 等語法都沒抓到,向大家請教~~ 謝謝~
str <- c("aaa bbb sp.", "aaa bbb sp2.")
gsub("[^a-zA-Z]*([a-zA-Z. ]+).*", "\\1", str)
^ 這個空格要留著 不然會出事XD
# [1] "aaa bbb sp." "aaa bbb sp"
我忘了問 會不會有 "aa2 bb3 cc." 要變成 "aa bb cc." 這種情況了?
有這種情況建議用regmatches,把 "aa", "bb", "cc."都抓出來,再處理QQ
大概像這樣(可能考慮還不夠周延):
str <- c("aaa bbb sp.", "aaa bbb sp2.", "aa2 bb3 cc.")
sapply(regmatches(str, gregexpr("[a-zA-Z. ]+", str)), function(x){
paste0(x[x != "."], collapse = "")
})
# [1] "aaa bbb sp." "aaa bbb sp" "aa bb cc."
--
R資料整理套件系列文:
magrittr #1LhSWhpH (R_Language) http://tinyurl.com/j3ql84c
data.table #1LhW7Tvj (R_Language) http://tinyurl.com/hr77hrn
dplyr(上) #1LhpJCfB (R_Language) http://tinyurl.com/jtg4hau
dplyr(下) #1Lhw8b-s (R_Language)
tidyr #1Liqls1R (R_Language) http://tinyurl.com/jq3o2g3
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.109.74.87
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1461920783.A.7D4.html
推
04/29 17:14, , 1F
04/29 17:14, 1F
剛剛就在想這個XD 看上面
推
04/29 17:18, , 2F
04/29 17:18, 2F
→
04/29 17:18, , 3F
04/29 17:18, 3F
特定的話,可以這樣處理,但我記得有方法做排除,要再查一下XD
這樣處理比較像是硬幹XD
str <- c("aaa bbb sp.", "aaa bbb sp2.", "aaa bbb ab.")
str_grab <- gsub("[^a-zA-Z]*([a-zA-Z. ]+).*", "\\1", str)
str_grab[which(!grepl("sp\\.", str_grab))] <-
gsub("([a-zA-Z ]+)\\.*", "\\1", str_grab[which(!grepl("sp\\.", str_grab))])
str_grab
# [1] "aaa bbb sp." "aaa bbb sp" "aaa bbb ab"
※ 編輯: celestialgod (140.109.74.87), 04/29/2016 17:38:23
推
04/29 22:47, , 4F
04/29 22:47, 4F
討論串 (同標題文章)
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章