2014-04-02 26 views
6

1 sweave hanno alcune espressioni contenute nel testo tra alcuni file .Rnw. Sweave successivo paragrafo contiene due espressioni. Quale espressione regolare può utilizzare per trovare il codice R 1 per ogni espressione. Così l'espressione regolare dovrebbe essere in grado di trovare mean(mtcars$mpg) e/o summary(lm(mpg ~ hp + drat, mtcars))un'espressione regolare per trovare il codice di espressione Sweave

carote Lorem ipsum, sconti avanzate, ma fare il tempo occaecat e vitalità, come il lavoro e l'obesità. \ {SEspr media (mtcars $ mpg)}. Nel corso degli anni, io verrò, che nostrud aliquip fuori dalla sua il vantaggio di esercizio, in modo che gli sforzi di stimolo se il distretto scolastico e la longevità. Vuoi essere un dolore al cillum cupidatat è stato criticato nel Duis et dolore magna fuggire produce alcun piacere risultante. i neri sono Excepteur cupidatat \ {sintesi sEspr (lm (mpg * HP + accidenti, mtcars))} excepteur sono in difetto, che è la mente morbidi abbandonano le loro responsabilità cambieranno.

risposta

5

la regex sarebbe (?<=\\Sexpr{).+?(?=})

  • (?<=\\Sexpr{) parte è positiva è lookahead positivo lookbehind
  • (?=})
  • .+? corrisponderà tutto tra due lookarounds sopra pigramente.

Readup di più qui. http://www.regular-expressions.info/lookaround.html

esempio R (dal momento che hai contrassegnato 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))"