努力学习LaTeX标记

时间:2014-03-07 10:22:48

标签: regex r latex

这是一个正则表达式问题,关于它在R中的实现。我使用knitr来排版一些文档,并且需要使用output hooks修改输出LaTeX。为了做到这一点,我需要使用正则表达式在LaTeX中找到一些模式。

一个这样的模式是\end{figure}。使用regexpr函数,我试图匹配这种模式,但到目前为止我的尝试都没有成功:

  regexpr('\\end{figure}', 'this is a multiline text 
          some more test here 
          before we get to the good stuff 
          \\end{figure}', perl = TRUE)

我该如何匹配这种模式?

1 个答案:

答案 0 :(得分:1)

使用rex可能会使这类任务变得更简单一些。特别是它会为你正确地逃避反斜杠和花括号。

x <- 'this is a multiline text 
          some more test here 
          before we get to the good stuff 
          \\end{figure}'

library(rex)
re <- rex('\\end{figure}')
re_matches(x, re)
#>[1] TRUE

# you can still use the regular expressions rex constructs 
# in all the normal R regular expression functions as well.
regexpr(re, x, perl = TRUE)
#>[1] 111
#>attr(,"match.length")
#>[1] 12
#>attr(,"useBytes")
#>[1] TRUE