Найти заменить именованные группы regexp в geany
Я пытаюсь заменить открытые методы защищенными методами для методов, которые имеют комментарий.
Это потому, что я использую phpunit для тестирования некоторых из этих методов, но они действительно не должны быть общедоступными, поэтому я хотел бы переключить их на рабочий сервер и переключиться обратно при тестировании.
вот объявление метода:
public function extractFile($fileName){ //TODO: change to protected
это регулярное выражение:
(?<ws>^s+)(?<pb>public)(?<fn>[^/n]+)(?<cm>//TODO: change to protected)
Если я заменю его на:
protected//TODO: change back to public for testing
похоже, что работает, но то,что я не могу заставить работать, - это назвать замену. Я должен использовать 1, чтобы получить первую группу. Зачем называть группы, если вы не можете получить к ним доступ в заменяющих текстах? Пробовал такие вещи, как, $ws, $ws, но это не работает.
мой вопрос: Что такое заменяющий текст, если я хочу заменить 1 на именованную группу?
1 ответов
на ?<ws>
синтаксис именованной группы такой же, как и у .NET/Perl. Для этих механизмов регулярных выражений ссылка на строку замены для именованной группы -${ws}
. Это означает, что ваша строка замены будет:
${ws}protected${fn}\//TODO: change back to public for testing
на \k<ws>
ссылки, упомянутые м.Бюттнер используется только для обратных ссылок в фактическое выражение.
Дополнительная Информация:
кажется, что geany также позволяет использовать стиль Python с именем группы:
-
?P<ws>
синтаксис захвата -
\g<ws>
синтаксис строки замены -
(?P=ws)
является синтаксисом backreference regex
EDIT:
Похоже, моя надежда на решение не сработала. От руководство,
"подмаски может быть назван одним из трех способов: (?...) или (?"имя"...) как в Perl, или (?П...) как в Python. Ссылки на захват скобки от другие части шаблона, такие как backreferences, рекурсия и условия, могут быть сделаны имя а также по количеству."
и дальше:
" обратные ссылки на named subpatterns используйте синтаксис Perl \k или \K 'name' или синтаксис Python (?Р=имя)."
и
" A subpattern, на который ссылается имя может появиться в шаблон до или после ссылки."
Итак, мой вывод синтаксиса для использования именованных групп был правильным. К сожалению, их можно использовать только в соответствующем шаблоне. Это отвечает на ваш вопрос " Почему группы имен...?".
насколько это глупо? Если вы прилагаете все усилия для реализации именованных групп и их использования в шаблоне соответствия, почему бы не реализовать использование в строке замены?