[英]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.