В какой-то текст мне нужно найти строку, которая может быть одним из followningобратная ссылка для захвата группы в Vim
foo#foo%foo
foo#foo%bar
foo#bar%foo
foo#bar%bar
bar#foo%foo
bar#foo%bar
bar#bar%foo
bar#bar%bar
Я мог бы написать регулярное выражение Искателя как этот
/\(foo\|bar\)#\(foo\|bar\)%\(foo\|bar\)
, который прекрасно работает.
Но я хочу избежать дублирования групп захвата в контролере.
Если я пишу что-то вроде
/\(foo\|bar\)#\1%\1
это соответствует только первому и последним возможным строкам я уже упоминал в начале.
В: Могу ли я ссылаться на предыдущую группу захвата, НЕ предыдущее совпадение?
Нет, это не так, как регулярные выражения работы. – lcd047
@ lcd047: Существует много диалектов регулярных выражений. Режимы Vim не работают. Вы можете сделать это в Oniguruma (механизм регулярного выражения Ruby), например ([rubular] (http://rubular.com/r/DR9vxPA3cv)) – Amadan
@Amadan Вы также можете сделать это с помощью [perl regexps] (https: // regex101.com/r/aD2cM0/1) и, возможно, многие другие. Тем не менее, я считаю, что вопрос О был о Виме. Vim упоминается в заголовке сообщения, что довольно сложно пропустить. Была ли какая-то особая причина вывести из моего ответа, что я имею в виду что-то еще, кроме Vim regexps? – lcd047