[英]gsub R extracting string
我試圖用gsub提取兩個逗號之間的字符串。 如果我有以下內容
xz<- "1620 Honeylocust Drive, 60210 IL, USA"
我想提取兩個逗號( 60120 IL
)之間的所有內容,是否可以使用gsub?
我努力了
gsub(".*,","",xz)
結果是美國。 我該怎么做?
我們可以匹配零個或多個字符不是,
( [^,]*
),后跟一個,
接着從開始的零個或更多的空間( ^
字符串或) |
一個,
隨后的零個或多個字符不屬於,
( [^,]*
)在端部( $
)串,並用空白替換( ""
)
gsub("^[^,]*,\\s*|,[^,]*$", "", xz)
#[1] "60210 IL"
或另一個選擇是使用sub
和捕獲作為一個組
sub("^[^,]+,\\s+([^,]+).*", "\\1", xz)
#[1] "60210 IL"
另一個選擇是regexpr/regmatches
regmatches(xz, regexpr("(?<=,\\s)[^,]*(?=,)", xz, perl = TRUE))
#[1] "60210 IL"
或使用str_extract
的stringr
library(stringr)
str_extract(xz, "(?<=,\\s)[^,]*(?=,)")
#[1] "60210 IL"
使用新的字符串,
xz1 <- "1620, Honeylocust Drive, 60210 IL, USA"
sub(".*,\\s+(+[0-9]+[^,]+).*", "\\1", xz1)
#[1] "60210 IL"
您也可以使用strsplit和grep進行此操作(為了便於閱讀,我在兩行中做了此操作):
xz1 <- "1620, Honeylocust Drive, 60210 IL, USA"
a1 <- strsplit(xz1, "[ ]*,[ ]*")[[1]]
grep("^[0-9]+[ ]+[A-Z]+", a1, value=TRUE)
#[1] "60210 IL"
它沒有使用gsub,在當前情況下還不是更好,但是也許更容易適應其他情況。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.