У меня есть огромная кодовая база, содержащая 400-500 файлов. В большинстве файлов мы имеем такие строки: <cfcatch type="any"> / <cfcatch type="database"> / <cfcatch> и т.д. Таким образом, общий шаблон - <cfcatch .

Итак, что мне нужно, там, где есть <cfcatch , мне нужно добавить эту новую строку после этой строки, т.е. <cfinclude template="test.cfm"> .

Так что <cfcatch type="any"> будет сейчас

<cfcatch type="any"> <cfinclude template="test.cfm">

Я пытался заменить несколько регулярных выражений, но безуспешно.

2 ответа2

0

Со следующими допущениями:

  • у вас нет <cfcatch></cfcatch> в одной строке (<cfinclude... все равно будет вставлен ниже!)
  • у вас нет <cfcatch/> (<cfinclude... все равно будет вставлен ниже!)
  • Вы не заботитесь об отступе вставленного <cfinclude...

... решение:

  • Найти: (<cfcatch.*)$(\s)
  • Заменить на: \1\2<cfinclude template="test.cfm">

Если эти предположения неверны, сообщите мне об этом в комментарии, и я исправлю свое решение в соответствии с этими требованиями.

0

Это возможно в 3 этапа:

Шаг 1:

С помощью функции « Найти в файлах» определите строку, которая НЕ содержится ни в одном файле, т. Е. Во всех 500 файлах имеется 0 вхождений. Допустим, вы обнаружили, что это строка ***###*** . (Я избегаю писем, чтобы избежать чувствительности к регистру, что упрощает решение.)
 

Шаг 2:

Использование Find in Files:

  • Найти: (^\<cfcatch.*$)

  • Заменить на: \1***###***

  • Режим поиска:

    • Регулярное выражение

    • Опция ". соответствует newliine": не отмечена

Поиск и замена во всех файлах.
 

Шаг 3:

Использование Find in Files:

  • Найти: ***###***

  • Заменить на: \r\n<cfinclude template="test.cfm">

  • Режим поиска: Расширенный

Поиск и замена во всех файлах.

Готово :)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .