簡體   English   中英

gsub R提取字符串

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

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM