我在一些.Rnw文件中的文本中包含一些sweave表达式。以下段落包含两个sweave表达式。我可以使用什么正则表达式来查找每个表达式中的R代码。因此,正则表达式应该能够找到mean(mtcars$mpg)
和/或summary(lm(mpg ~ hp + drat, mtcars))
Lorem ipsum dolor sit amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore et dolore magna aliqua。 \ {Sexpr平均(mtcars $ MPG)}。 Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat。 Duis aute irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur。 Excepteur sint occaecat cupidatat \ Sexpr {summary(lm(mpg~hp + drat,mtcars))} non non proident,sunt in culpa qui officia deserunt mollit anim id est laborum。
答案 0 :(得分:5)
正则表达式为(?<=\\Sexpr{).+?(?=})
(?<=\\Sexpr{)
部分是积极的背后隐藏(?=})
是积极向前看的.+?
将懒洋洋地匹配上述两个外观之间的所有内容。 在这里阅读更多内容。 http://www.regular-expressions.info/lookaround.html
E.g。在R中(因为你标记了R)
txt <- 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. \\Sexpr{mean(mtcars$mpg)}. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat \\Sexpr{summary(lm(mpg ~ hp + drat, mtcars))} non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.'
regmatches(txt, gregexpr('(?<=\\Sexpr{).+?(?=})', txt, perl=T))
## [[1]]
## [1] "mean(mtcars$mpg)" "summary(lm(mpg ~ hp + drat, mtcars))"