2

Я использую блокнот ++ и хочу выполнить операцию поиска и замены.
Например

  • 4 числа пробелов означают 1 вкладку
  • 6 пробелов означает 2 табуляции и т.д.

В моем файле все пробелы находятся в начале каждой строки.

Какое регулярное выражение я должен использовать, чтобы найти точное количество пробелов?
Я хочу заменить пробелы символами табуляции (например, одинарными или двойными табуляциями на основе 4 пробелов или 6 пробелов)

Примечание. Файл представляет собой файл классификации, в котором объясняется, что 4 пробела являются родительскими, а 6 пробелов - дочерними, а 8 пробелов - дочерними.

Образец файла:

Agriculture, forestry and fishing
 Crop and animal production, hunting and related service activities
   Growing of non perennial crops
     Growing of cereals (except rice), leguminous crops and oil seeds
     Growing of rice
     Growing of vegetables and melons, roots and tubers

2 ответа2

4

Синтаксис для регулярного выражения, чтобы узнать количество пробелов в начале строки

 ^(space_character){number_of_spaces_to_be_found}
,
Например, следующее регулярное выражение найдет 4 пробела
 ^ {4}
,
В коробке замены используйте
"\t"
для замены вашей находки одной вкладкой.
Для двух вкладок используйте
"\t\t"
,
0

Возможно, следующий шаблон будет делать то, что вы хотите (угловые скобки окружают шаблоны):

Четыре ведущих пробела становятся одной вкладкой

Find: <^ {4}([^ ].*)$>
Replace: <\t\1>

Шесть ведущих пробелов становятся двумя вкладками

Find: <^ {6}([^ ].*)$>
Replace <\t\t\1>

объяснение

  • Как отмечено в других ответах, ^ соответствует началу строки.
  • Также, как отмечено, обозначение фигурной скобки {#} указывает совпадение для определенного числа повторений.
  • Следующее содержимое в квадратных скобках, [^ ] , является классом символов, совпадающим с одним символом, который не является пробелом (квадратные скобки определяют класс символов; начальная ^ здесь указывает на инвертирование класса).
  • .*$ соответствует любому количеству символов любого типа (возможно, включая символы новой строки, в зависимости от того, как настроен движок Regex) до конца строки.
  • Круглые скобки ([^ ].*) Указывают на определенную группу в шаблоне, которая (возможно, в зависимости от движка Regex в Notepad++) извлекается в выражении Replace по \1 .

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