С Notepad ++ связано то, что он изначально не поддерживает многострочные регулярные выражения .
Изменить 08.11.2012 : вышесказанное больше не относится к Notepad ++ 6.0.Но это верно для 5.x.
Для замены текста, он имеет нормальный режим, расширенный режим и режим регулярных выражений, в котором отсутствуют некоторые вещи.Однако два последних можно объединить для получения хороших результатов (на самом деле, иногда даже проще разделить обработку на несколько частей).
Непонятное решение, но работающее:
Launch Search -> Find in files
(CTRL-SHIFT-F), укажите каталог и фильтры, а затем:
- избавьтесь от любых пробелов (пробелы, отступы табуляции) и новых строк - замените, используя Режим поиска = расширенный ,последовательно: найдите то, что =
\r\n
, \t
, <single space here>
, замените на = <leave the field empty>
в каждом случае.После этого у вас есть однострочный текст, который нравится N ++ для обработки регулярных выражений: - теперь выполняйте ваши операции в Режим поиска = Регулярное выражение :
- Найдите что=
<animal><dog>(.*?)</dog><dog>(.*?)</dog><dog>(.*?)</dog><dog>(.*?)</dog><dog>(.*?)</dog></animal>
- Заменить на =
<animal><dog>\1</dog><dog>\2</dog><dog>\3aaa</dog><dog>\4bbb</dog><dog>\5ccc</dog></animal>
- TextFX -> TextFX HTML Tidy -> Tidy: переопределить XML для получения форматирования XMLназад (может незначительно отличаться по количеству пробелов и т. д.).
На шагах 1 и 2 нажмите «Заменить в файлах» для выполнения.
Строки \1
,..., \5
относятся к значениям последовательных узлов (значения в скобках в регулярном выражении).Поместите это или оставьте это и добавьте любой произвольный текст, который вы хотите.(.*?)
- это регулярное выражение, которое соответствует любому символу и является нечувствительным (?
обозначает несжатость), поэтому оно будет соответствовать только кратчайшему возможному фрагменту (в противном случае он мог бы найти меньшее число <animal>
s, чем у вас в файлах.