R在匹配字符串后获取接下来的n个单词

R在匹配字符串后获取接下来的n个单词,r,regex,string,R,Regex,String,如果这是我的绳子 "Mrs Miller IDN: 29.23 FT/GHI. 35.3 degree C wants the entire house repainted." 如何捕获出现在IDN:之后的文本29.23,并忽略其余部分 我尝试了很多gsub函数,结果不是很好 你从来没有告诉我们你尝试了什么,哪里出了问题,但除此之外,你的问题说得很清楚。我猜您在调用gsub()时使用了错误的模式 str您从未告诉我们您尝试了什么以及哪里出了问题,但除此之外,您的问题陈述得很好。我猜您在调用gs

如果这是我的绳子

"Mrs Miller IDN: 29.23 FT/GHI. 35.3 degree C wants the entire house repainted."
如何捕获出现在
IDN:
之后的文本
29.23
,并忽略其余部分


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

你从来没有告诉我们你尝试了什么,哪里出了问题,但除此之外,你的问题说得很清楚。我猜您在调用
gsub()
时使用了错误的模式


str您从未告诉我们您尝试了什么以及哪里出了问题,但除此之外,您的问题陈述得很好。我猜您在调用
gsub()
时使用了错误的模式

str使用
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))
string使用
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))
stringd.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]
使用
perl

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

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

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]
使用
perl

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

stringr

library(stringr)

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

stringr

library(stringr)

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

你说你尝试了什么,请分享看看哪里出了问题。
strtrim(gsub(([0-9]+[0-9]+)|\\C“,“\\1”,str,perl=TRUE),5)
库(stringi);unlist(stri_extract_all_regex)(unlist(strsplit)(米勒夫人IDN:29.23英尺/摄氏35.3度想重新粉刷整栋房子),“IDN:”)[2],“[0-9\\\\.]+”)[1]
其他两个答案的不错选择…我将作为社区维基为你提交。你说你尝试了什么,请分享看看哪里出了问题。
strtrim(gsub)([0-9]+[0-9])|\\C“,“\\1”,str,perl=TRUE),5)
库(stringi);unlist(stri_extract_all_regex)(unlist(strsplit)(米勒夫人IDN:29.23英尺/摄氏35.3度想重新粉刷整栋房子),“IDN:”)[2],“[0-9\\\.]+”)[1]
这是另外两个答案的好选择……我将作为社区维基为您提交。我想知道这里有什么与
[^\\s]*?
匹配。编辑:是的,
[^[:space:][]*?
是正确的。但你至少可以使用贪婪的量词使其工作更顺畅。@WiktorStribiżew它不匹配文字反斜杠或字母s,显然不是我们想要的。我想知道你是否知道这里匹配的是什么。编辑:是的,
[^[:space:][]*?
是正确的。但你至少可以使用贪婪的量词使其工作更顺畅。@WiktorStribiżew它不匹配字面反斜杠或字母s,显然不是我们想要的。