r grep';n';匹配前后的字符

r grep';n';匹配前后的字符,r,string,R,String,我从Pubmed检索到了一个.XML文件。现在,我想在文件的每一行中找到两个不同的“字符串/单词”,如果找到了“字符串/单词”,那么我想检索匹配的“字符串/单词”以及匹配前后的“n”个字符 例如,如果要搜索的字符串在下一行中为“string”,我希望在匹配字符串前后各有10个字符 “字符串的其余部分实际上非常有用” 我应该得到 “文件的st是实际的”您只需“填充”正则表达式,让它获取前后的10个字符即可 x <- "The rest of the string is actually re

我从Pubmed检索到了一个.XML文件。现在,我想在文件的每一行中找到两个不同的“字符串/单词”,如果找到了“字符串/单词”,那么我想检索匹配的“字符串/单词”以及匹配前后的“n”个字符

例如,如果要搜索的字符串在下一行中为“string”,我希望在匹配字符串前后各有10个字符

“字符串的其余部分实际上非常有用”

我应该得到

“文件的st是实际的”

您只需“填充”正则表达式,让它获取前后的10个字符即可

x <- "The rest of the string is actually really useful"
stringr::str_extract(x, ".{0,10}string.{0,10}")
# [1] "st of the string is actual"
x您只需“填充”正则表达式,让它在前后抓取10个字符

x <- "The rest of the string is actually really useful"
stringr::str_extract(x, ".{0,10}string.{0,10}")
# [1] "st of the string is actual"

x您可以使用
regmatches

 regmatches(x,regexpr(".{1,10}string.{1,10}",x))
[1] "st of the string is actual"

您可以使用
regmatches

 regmatches(x,regexpr(".{1,10}string.{1,10}",x))
[1] "st of the string is actual"

非常感谢你,弗利克先生。这真的奏效了。还有一件事,你能建议我如何搜索上面例子中的两个字符串“string”或“actual”?你可能应该花时间阅读正则表达式。它们不是R特有的。有很多选择。您可以使用“|”来表示或样式匹配
stringr::str_extract(x,“.{0,10}(实际上是字符串)。{0,10}”)
,但不太清楚如何处理每个字符串的多个匹配。如果你也在这个网站上搜索现有的问题,你可能会找到更多的建议。非常感谢Flick先生。这真的奏效了。还有一件事,你能建议我如何搜索上面例子中的两个字符串“string”或“actual”?你可能应该花时间阅读正则表达式。它们不是R特有的。有很多选择。您可以使用“|”来表示或样式匹配
stringr::str_extract(x,“.{0,10}(实际上是字符串)。{0,10}”)
,但不太清楚如何处理每个字符串的多个匹配。如果你在这个网站上搜索现有的问题,你可能会找到更多的建议。谢谢Onyambu@AmitAgrey这意味着什么?与您的上述建议相关,如果我希望搜索多个字符串,如string1、string2或string3,并希望将搜索作为向量传递,该怎么办;我明白你的意思。尝试
sapply(paste0((.{1,10}),searchstring,“.{1,10})”),函数(i)regmatches(x,gregexpr(i,x))
。虽然给出了一个示例,但是您可以找到正确的regexp,没有循环,谢谢Onyambu@AmitAgrey这意味着什么?与您的上述建议相关,如果我希望搜索多个字符串,如string1、string2或string3,并希望将搜索作为向量传递,该怎么办;我明白你的意思。尝试
sapply(paste0((.{1,10}),searchstring,“.{1,10})”),函数(i)regmatches(x,gregexpr(i,x))
。尽管给出了一个示例,但您可以找到没有for循环的正确regexp