регулярное выражение для определения `n ()` - PullRequest
0 голосов
/ 21 марта 2019

Я бы хотел заменить n() на dplyr::n().Я хотел бы сопоставить записи типа

n()
 n()
a = n()
b = runif(n())

, но не сопоставить записи типа

function()
dplyr::n()

следующее регулярное выражение работает, но я былинтересно, есть ли лучший способ.

  • pattern: ([^:\w]|\A)n\(\);подстановка: $1dplyr::n()

Вот два неудачных подхода с использованием отрицательных взглядов .Первый (который ищет не B раунд, пропускает dplyr::n(), в то время как второй пропускает function().

  • паттерн: (?<!\B)n\(\); замена: dplyr::n()
  • шаблон: (?<!:)n\(\); подстановка: dplyr::n()

Примечание: я гибко отношусь к аромату регулярных выражений. Мне удобнее использовать Atom для замены на несколькофайлы в репозитории. (На самом деле это не ограничение, но этот код для изменения - R, который использует PCRE .) Приведенный выше шаблон замещения написан для regex101 .

...