我想從字串中提取 (3) 個數字和 (3) 個字母。str <- c("ABC_123", "DEF..456", "GHI--789A")
我想要這樣的輸出:ABC123、DEF456、GHI789
我如何使用 stringr 包函式來做到這一點?
uj5u.com熱心網友回復:
另一個答案的優秀一步的替代方法是這種兩步法,這也將確保不合規的字串將被正確過濾。
str <- c("ABC_123", "DEF..456", "GHI--789A", "GH--789A")
### ^^^^^ added as a non-matching string
library(stringr)
str_replace(
str_extract(vec, "([A-Z]{3}).*([0-9]{3})"),
"^(...).*(...)$", "\\1\\2")
# [1] "ABC123" "DEF456" "GHI789" NA
uj5u.com熱心網友回復:
我們可能會洗掉不是字母數字的字符并替換為空白 ( "") 并獲得前 6 個字符substr
substr(gsub("[_.- ] ", "", str), 1, 6)
[1] "ABC123" "DEF456" "GHI789"
或者另一種選擇是作為一個組捕獲
sub("^([A-Z]{3})[[:punct:] ] (\\d{3}).*", "\\1\\2", str)
[1] "ABC123" "DEF456" "GHI789"
或者一般來說,使用 [[:punct:]]
substr(gsub("[[:punct:] ] ", "", str), 1, 6)
[1] "ABC123" "DEF456" "GHI789"
在 中stringr,選項是str_remove_all
library(stringr)
substr(str_remove(str, "[[:punct:] ] "), 1, 6)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/312500.html
上一篇:將字串提取到每行中的不同單詞-R
下一篇:如何拆分和過濾字串?
