У меня есть текстовые файлы с некоторой информацией, которую я хочу скопировать из одного места и вставить в другом месте в той же строке. Например, у меня есть что-то вроде:

Random text here { Name = "Tropical Smoothie", UniqueId = "1110100", More random text};
Random text here { Name = "Tropical Smoothie", UniqueId = "1110110", More random text};
Random text here { Name = "Tropical Mango Smoothie", UniqueId = "1110120", More random text};
.
.
.
Random text here { Name = "Tropical Smoothie", UniqueId = "2000110", More random text};

и я хочу, чтобы числа после UniqueId копировались и помещались в конец Smoothie на одной строке, вот так

Random text here { Name = "Tropical Smoothie 1110100", UniqueId = "1110100", More random text};
Random text here { Name = "Tropical Smoothie 1110110", UniqueId = "1110110", More random text};
Random text here { Name = "Tropical Mango Smoothie 1110120", UniqueId = "1110120", More random text};
.
.
.
Random text here { Name = "Tropical Smoothie 2000110", UniqueId = "2000110", More random text};

Пока после слов в кавычках после имени есть пробел, а затем номера уникального идентификатора. Имя может быть любым, UniqueId уникален для каждой строки.

Таким образом, используя первую строку в качестве примера, в текстовом редакторе я выделю 1110100, скопирую его и поставлю пробел после Smoothie, а затем вставлю. Затем я сделал бы то же самое для следующей строки и так далее. Можно ли как-нибудь автоматизировать эту задачу для каждой строки? Я попробую любой скрипт или программу для Windows. Даже что-то, что делает «для каждой строки копирование 7 цифр после 3-х двойных кавычек и вставка до 2-х двойных кавычек» или что-то подобное будет работать.

1 ответ1

0

Вы задали тот же вопрос в StackOverflow, где я только что написал вам ответ. Я даю тот же ответ и здесь.

Вы можете выполнить то, что вы просите, с помощью любого текстового редактора, который поддерживает Regex. В этом примере я буду использовать Notepad++. Сначала я опишу, что делать, а затем объясню, что делает Regex.

пример

  1. Откройте файл с помощью Notepad++ .
  2. Нажмите Ctrl+F чтобы открыть окно Search and Replace .
  3. Обязательно установите флажок с именем Wrap around
  4. Выберите Regular expression в Search Mode
  5. В разделе Find What: вставьте Name = "(.*)", UniqueId = "(\d+)"
  6. В разделе " Replace with: вставить Name = "$1 $2", UniqueId = "$2"
  7. Нажмите Replace all один раз.

Npp-с регулярным выражением

Понимание регулярного выражения

  • () эти символы представляют группу, которую вы хотите захватить.
  • $1 представляет первую группу, которую вы пометили ()
  • $2 тоже самое, но это занимает вторую группу.
  • \d соответствует any digit . + после цифры означает совпадение с одной или несколькими цифрами.
  • . соответствует any character . * после точки означает совпадение с нулем или более символов.

В примере поиска Name = "(.*)", UniqueId = "(\d+)" у нас есть две группы. Соответствие содержимого между кавычками Name и UniqueId.

В примере замены Name = "$1 $2", UniqueId = "$2" мы используем эти группы, чтобы заменить то, что мы сопоставляем, чем-то новым. Новым в данном случае является содержимое группы $1 и группы $2 .

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