我從字符串中提取多種類型的模式。例如,從字符串中提取多種類型的模式
「上市2013年3月25日爲25000和銷售爲$ 10,250的2010年4月5日」
我想提取日期「2013年3月25日」,「2010年4月5日「向量」日期「和」25000「」$ 10,250「到向量。
text <- "Listed 03/25/2013 for 25000 and sold for $10,250 on 4/5/2010"
# extract dates
dates <- str_extract_all(text,"\\d{1,2}\\/\\d{1,2}\\/\\d{4}")[[1]]
# extract amounts
text2 <- as.character(gsub("\\d{1,2}\\/\\d{1,2}\\/\\d{4}", " ", text))
amountsdollar <- as.character(str_extract_all(text2,"\\$\\(?[0-9,.]+\\)?"))
text3 <- as.character(gsub("\\$\\(?[0-9,.]+\\)?", " ", text2))
amountsnum <- as.character(str_extract_all(text3,"\\(?[0-9,.]+\\)?"))
amounts <- as.vector(c(amountsdollar, amountsnum))
list(dates, amounts)
但是訂單沒有保留。有沒有更好的方法來做到這一點?謝謝。
[I已經寫了一個小函數爲這個](https://gist.github.com/klmr/5555335) - 它或多或少相同stringr函數,但它確實保持順序。 – 2013-05-10 15:52:54
@KonradRudolph regmatches有什麼問題? – 2013-05-10 16:09:16
@Mthethew我不知道它的事實。嘆。這會教會我正確閱讀文檔。 – 2013-05-10 16:53:47