2014-04-02 15 views
6

1 sweave có một số biểu thức chứa trong văn bản trong một số tác phẩm .Rnw. Sweave đoạn dưới đây chứa hai biểu thức. Có gì biểu thức chính quy có thể sử dụng để tìm mã R 1 cho mỗi biểu thức. Vì vậy, các biểu hiện thường xuyên nên có thể tìm thấy mean(mtcars$mpg) và/hoặc summary(lm(mpg ~ hp + drat, mtcars))Một biểu thức chính quy để tìm mã trong biểu Sweave

cà rốt lorem ipsum, giảm giá nâng cao, nhưng họ làm thời gian occaecat và sức sống, như lao động và béo phì. \ {Sexpr bình (mtcars $ mpg)}. Qua nhiều năm, tôi sẽ đến, ai sẽ nostrud aliquip ra khỏi cô lợi thế của việc tập thể dục, để nỗ lực kích thích kinh tế nếu khu học chánh và tuổi thọ. Muốn trở thành một cơn đau ở cillum cupidatat đã bị chỉ trích trong Duis et dolore magna chạy trốn không tạo ra niềm vui kết quả. người da đen Excepteur là cupidatat \ {Sexpr tóm tắt (lm (mpg * HP + drat, mtcars))} excepteur họ là có lỗi, rằng đó là đầu óc nhẹ nhàng từ bỏ trách nhiệm của mình sẽ thay đổi.

Trả lời

5

regex sẽ (?<=\\Sexpr{).+?(?=})

  • (?<=\\Sexpr{) phần là tích cực là lookahead tích cực lookbehind
  • (?=})
  • .+? sẽ phù hợp với tất cả mọi thứ giữa hai lookarounds trên uể oải.

Readup thêm ở đây. http://www.regular-expressions.info/lookaround.html

ví dụ R (kể từ khi bạn gắn thẻ 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))" 
Các vấn đề liên quan