我在R中使用正则表达式时遇到了一些麻烦。我使用了库字符串中的str_extract,而我的问题是:

library(stringr)
test="word1 something word2 something word3 something word3"
temp = str_extract(test,'word2.+word3')
print(temp)
## [1] "word2 something word3 something word3"

问题是我希望它在第一个单词3处停止,我不希望字符串的最后一部分。
有什么想法吗?非常感谢你

如果我有
test="word1 something word2 something1 word3 something2 word3 something3 word2 something4 word3"

而且我想保留2个大小的向量,例如“word2 something1 word3”,“word2 something4 word3”
再次感谢

最佳答案

将您的正则表达式行更改为:

temp = str_extract(test,'word2.+?word3')
                                ^

请注意,我添加了?,这使得.+不贪心(即,与捕获正则表达式中下一个术语之前的所有内容相比,捕获的内容尽可能少)。

要提取所有出现的内容,请使用:
temp = str_extract_all(test,'word2.+?word3')

09-18 08:24