2014-04-02 28 views
6

1 sweave pewne wyrażenia zawarte w tekście wśród niektórych plików .Rnw. Sweave Poniższy akapit zawiera dwa wyrażenia. Jakie wyrażenie regularne można użyć, aby znaleźć kod R1 dla każdego wyrazu. Tak więc wyrażenie regularne powinno być w stanie znaleźć mean(mtcars$mpg) i/lub summary(lm(mpg ~ hp + drat, mtcars))Wyrażenie regularne, aby znaleźć kod w Sweave ekspresji

marchewki lorem ipsum rozszerzonych rabatów, ale robią occaecat czas i witalność, takich jak praca i otyłości. \ {Sexpr średnie (mtcars $ mpg)}. Z biegiem lat, przyjdę, którzy będą nostrud aliquip z nią przewagę ćwiczenia, tak że wysiłki stymulacyjne jeśli okręgu szkolnego i długowieczności. Chcesz być ból w cillum cupidatat został skrytykowany w DUIs et dolore magna uciekać nie wytwarza powstałego przyjemność. Excepteur czarni są cupidatat \ {Podsumowując Sexpr (LM (mpg * HP + drát, mtcars))} excepteur one są winne, że jest miękkie umysły porzucić swoje obowiązki zmieni.

Odpowiedz

5

regex byłoby (?<=\\Sexpr{).+?(?=})

  • (?<=\\Sexpr{) część jest dodatni dodatni uprzedzona lookbehind
  • (?=})
  • .+? będzie pasował do wszystkiego pomiędzy dwoma lookarounds powyżej leniwie.

Readup więcej tutaj. http://www.regular-expressions.info/lookaround.html

np R (skoro oznaczone 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))"