R匹配字符串后得到下n个单词

时间:2017-07-20 16:23:15

标签: r regex string

如果这是我的字符串。

"Mrs Miller IDN: 29.23 FT/GHI. 35.3 degree C wants the entire house repainted."

如何捕捉29.23之后显示的文字IDN:,而忽略其余文字。

我尝试了很多gsub函数,结果不是很好。

4 个答案:

答案 0 :(得分:2)

你从来没有告诉我们你尝试了什么以及它出了什么问题,但除此之外你的问题已得到充分说明。我的猜测是你在gsub()的电话中使用了错误的模式。

str <- "Mrs Miller IDN: 29.23 FT/GHI. 35.3 degree C wants the entire house repainted."
gsub(".*IDN: ([^[:space:]]*?)\\s.*", "\\1", str)
[1] "29.23"

答案 1 :(得分:1)

使用sub()strplit ...

string <- "Mrs Miller IDN: 29.23 FT/GHI. 35.3 degree C wants the entire house repainted."

string <- sub(" .*", "", sapply(strsplit(string, "IDN: "), "[", 2))

答案 2 :(得分:0)

d.b。回答...

但是,我不确定在提供两种基本解决方案时加载额外的包是否有意义。

library(stringi); unlist(stri_extract_all_regex(unlist(strsplit("Mrs Miller IDN: 29.23 FT/GHI. 35.3 degree C wants the entire house repainted.", "IDN:"))[2],"[0-9\\.]+"))[1]

snoram回答perl

strtrim(gsub("([0-9]+.[0-9]+)|\\C", "\\1", str, perl = TRUE), 5)

答案 3 :(得分:0)

word

始终有趣的stringr功能
library(stringr)

word(word(x, 2, sep = 'IDN: '), 1)
#[1] "29.23"