• 1000 *.
Я перепробовал весь синтаксис обратной ссылки, описанный в Ссылка на заменяемые строки: сопоставленный текст и обратные ссылки . Оказалось, что ни один из \g<1>
, \g{1}
, ${1}
, $<1>
, $+{1}
, и т.д. c. работай. Однако есть и другие обратные ссылки, например $'
( вставляет часть строки, которая следует за сопоставленной подстрокой ) или $`
( вставляет часть строки, которая предшествует сопоставленной подстроке. ). Однако эти две обратные ссылки не работают в функции поиска и замены файлов VS Code, они не вставляют текст при использовании в шаблоне замены.
Итак, мы можем использовать $`
или $'
в качестве пустых заполнителей в шаблоне замены .
Найти что : fix(.*?)123
Заменить на :
Или, как в моем предварительном тесте , уже предоставленном в Ответ Марка , «техническая» группа захвата, соответствующая пустой строке, ()
, можно ввести в шаблон, чтобы обратная ссылка на эту группу могла использоваться в качестве «защиты» перед последующей «значимой» обратной ссылкой:
Find What : fixed()(.*)123
( см. ()
в шаблоне, на который можно сослаться, используя $1
) Заменить на : fixed$1$2234
Здесь $1
- это «защитный» заполнитель, позволяющий правильно анализировать $2
обратную ссылку.
Боковое примечание об именованных группах захвата
Именованные группы захвата поддерживаются , но вы должны использовать .NET / PCRE / Java синтаксис именованной группы захвата, (?<name>...)
. К сожалению, ни один из известных именованных обратных ссылок не работает. Я пробовал синтаксис $+{name}
Boost / Perl, $<name>
, ${name}
, ничего не работает.
Заключение
Итак, здесь есть несколько проблем, которые необходимо адресовать:
- Нам нужен синтаксис поддержки с однозначной нумерацией (
\g<1>
, ${1}
или $<1>
) - Нам нужно убедитесь, что
$'
или $`
работают должным образом или анализируются как буквальный текст (то же самое, что $_
(используется для включения всей входной строки в заменяющую строку ) или $+
(используется для вставки текста, соответствующего группе захвата с наибольшим номером, которая фактически участвовала в сопоставлении ), обратные ссылки, которые не распознаются функцией поиска и замены файлов Visual Studio Code), текущее поведение, когда они не вставлять текст скорее не определено - Нам нужно ввести именованный синтаксис обратной ссылки (например,
\g<name>
или ${name}
).