Я использую функцию IDE «Найти и заменить» (w / RegEx), чтобы найти и заменить параметр типа аргументов для перехода от snake_case к PascalCase (AKA UpperCamelCase). В проекте есть несколько файлов и строк, которые необходимо изменить, и ручное выполнение этого довольно подвержено ошибкам и утомительно (плюс я уверен, что мне понадобится необходимый шаблон снова для будущих изменений).
Например:
CURRENT: function find_all_by_name_and_status(_i_find_all_by_name_and_statusCriteria find_all_by_name_and_status_criteria) ...
Должно быть:
DESIRED: function find_all_by_name_and_status(IFindAllByNameAndStatusCriteria find_all_by_name_and_status_criteria) ...
Шаблоны, которые я использую, следующие:
FIND: (?<=\()_(.)(Criteria)*
REPLACE: \U$1\L
Шаблон замены будет работать, насколько я вижу, если первая найденная группа захвата будет правильной (буква сразу после "_").
Шаблон ядра _(.)
находит правильные компоненты для замены, однако он также фиксирует и другие части строки. Итак, я добавил положительный взгляд за (?<=\()
, чтобы начать с открывающих скобок, и завершающий фиктивный захват для (Criteria)*
. Кажется, что весь шаблон приводит к тому, что основной шаблон совпадает только один раз, а не повторно (?R)
похоже тоже не помогает.
приписка
Похоже, (Criteria)*
тоже ничего не делает, но я решил, что это вторая проблема, которую нужно решить после получения базового шаблона для поиска всех совпадений / повторов.
Я чувствую, что близок к решению, но пока не совсем. Я, конечно, мог бы быть ОЧЕНЬ отстраненным от решения. Любая помощь будет оценена.