2014-04-02 27 views
6

1 sweave都包含在某個.Rnw文件中的文本一些表達式。 Sweave下面的段落包含兩個表達式。什麼正則表達式可以用它來找到每個表達式將R代碼1。所以,正則表達式應該能夠找到mean(mtcars$mpg)和/或summary(lm(mpg ~ hp + drat, mtcars))正則表達式查找代碼Sweave表達

Lorem存有胡蘿蔔,增強回扣,但他們occaecat時間和活力,如勞動力和肥胖。 \ {Sexpr平均(mtcars $ MPG)}。多年來,我會來的,誰將會nostrud aliquip了她鍛鍊的優勢,使刺激措施,如果學區和長壽。想成爲在cupidatat cillum疼痛已經在DUIS等dolore麥格納被批評逃離產生任何結果的樂趣。 Excepteur黑人cupidatat \ {Sexpr摘要(LM(MPG * HP + DRAT,mtcars))} excepteur自己做錯了,它是軟的頭腦放棄自己的職責將發生變化。

回答

5

正則表達式將(?<=\\Sexpr{).+?(?=})

  • (?<=\\Sexpr{)部分是值得肯定的是正向前查找回顧後
  • (?=})
  • .+?將在兩個lookarounds之間的匹配上面懶洋洋的一切。

電文讀出更多的在這裏。 http://www.regular-expressions.info/lookaround.html

例如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))"