Мне нужно найти экземпляры команды LaTeX \ index в целом наборе документов knitr (.Rnw), в которых есть запятые. Они могут встречаться на нескольких линиях, например.Многострочные регулярные выражения в R
\index{prior distribution,choosing beta prior for
$\pi$,vague prior knowledge}
Я достаточно доволен своей R код, чтобы найти вещи:
line = paste(readLines(input), collapse = "\n")
r = gregexpr(pattern, line)
if(length(r) > 0){
lapply(regmatches(line, r), function(e){cat(paste(substr(e, 0, 50), "\n"))})
}
Однако, я не могу показаться, чтобы получить регулярное выражение правильно. Я попытался
pattern = "(\\s)\\\\index\\{.*[,][^}]*\\}"
который получает некоторые, но не все,
pattern = "\\\\index\\{[A-Za-z \\s][^}]*\\}"
, который получает больше, но много я не хочу. Например, он находит
\index{posterior variance!beta distribution}
Любая помощь оценивается.
Это помогло бы, если бы у вас был большой набор вещей, чтобы соответствовать или нет в вашем примере. Независимо от того, существует многострочный флаг '(? M)', вы можете установить в perl-подобном регулярном выражении. Что-то вроде 'pattern =" (? M)^\\\\ index \\ {. * [,] [^}] * \\} "'? Вам нужно установить 'perl = TRUE' в' gregexpr'. – alistaire