Notepad удалить все кроме
У меня есть группа индийских фамилий, которые имеют номер слева и справа. Мне нужно убрать все, кроме имени.
И хотел бы закончить на .
У меня есть несколько таких списков, и все они представлены в несколько разных форматах. Я пытаюсь узнать, что делают команды Regex, поэтому был бы признателен за любое краткое описание того, что делает эту работу (я тоже читаю об этом).
3 ответа
У меня есть список русских фамилий, с некоторыми другими вещами в пути. Я хочу удалить все, кроме английской версии фамилии, которая находится внутри скобок. У меня есть . 1 Иванов (Ivanov) 5,043,000 2 Смирнов (Smirnov) 3,419,000 3 Васильев (Vasilev) 2,464,000 И хочу. Ivanov Smirnov Vasilev
- Ctrl + H
- Найти что: ^\S+\s+(\S+).+$
- Заменить на: $1
- Нажмите на Replace All
\s означает любой вид пространств.
\S -это противоположность, все, что не является пространством.
Второй столбец хранится в группе 1, поэтому при замене te остается только второй столбец.
Допустим, у вас есть это в текстовом файле строка за строкой, вы выполните следующие действия:
- Ctrl + H
- Найти что: (.+)([A-Z][a-z]+)(.+)
- Заменить на: \2
- Режим поиска: Регулярное выражение
- Нажмите на Replace All
вы можете заменить [0-9 ,] ничем
Похожие вопросы:
Я использую регулярное выражение в Notepad++, пытаясь удалить все после определенного слова. Например вот мой текст: Bull01 blah blah Bull02 Blah blah Bull03 Blah Bull04 Blah Bull05 Blah ** Bull300.
У меня есть огромный текстовый файл (375K строк ). все, что мне нужно, - это первый столбец текстового файла. Я использую notepad++. Как я могу удалить все, кроме этой первой колонки? Удаление с.
У меня есть записи в таблице базы данных Postgres, в которой у меня есть посторонние данные в определенном столбце. Я хочу выбрать все, кроме этого фрагмента текста из этой колонки. Этот фрагмент.
У меня есть список русских фамилий, с некоторыми другими вещами в пути. Я хочу удалить все, кроме английской версии фамилии, которая находится внутри скобок. У меня есть . 1 Иванов (Ivanov).
У меня есть несколько файлов с текстом типа . <studio>Morabito Picture Company</studio>.
Я использую Outlook API , чтобы забрать тело посланного email. Теперь я хочу очистить тело, чтобы удалить все ссылки, заголовки и т. д. и сохранить только текст, написанный пользователем. Ниже.
Я открываю страницу HTML в Notepad++. На странице html есть много чего, но особенно этот тег: <div Я бы хотел удалить из файла html все, кроме этого тега и.
Notepad++ : у меня есть файл с телефонными номерами, все они имеют тип 123-123-1234 Мне нужно сопоставить шаблон any3digitsDASHany3digitsDASHany4digits и удалить все, что не соответствует этому.
Можно ли удалить дублированные строки в Notepad ++, оставив только одно вхождение строки?
Notepad ++ может сделать это, если вы хотите сортировать по строкам и одновременно удалять дублирующиеся строки.
Вам понадобится плагин TextFX. Раньше это было включено в более старые версии Notepad ++, но если у вас более новая версия, вы можете добавить ее из меню, перейдя в Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install . В некоторых случаях это тоже можно назвать TextFX Characters , но это одно и то же
Флажки и кнопка требуются теперь появятся в меню в разделе: TextFX -> TextFX Tools .
Убедитесь, что «сортировать выходные данные только уникальные . » отмечен. Далее выберите блок текста ( Ctrl +, A чтобы выделить весь документ). Наконец, нажмите «сортировать строки с учетом регистра» или «сортировать строки с учетом регистра»
Начиная с версии Notepad ++ версии 6, вы можете использовать это регулярное выражение в диалоге поиска и замены:
и заменить ничем . Это оставляет из всех повторяющихся строк последнее вхождение в файл.
Для этого не требуется сортировка, и повторяющиеся строки могут находиться в любом месте файла!
Вам необходимо проверить параметры «Регулярное выражение» и «. Соответствует новой строке»:
^ соответствует началу строки.
(.*?) соответствует любому символу 0 или более раз, но как можно меньше (это точно соответствует строке, это необходимо из-за опции ". соответствует новой строке"). Соответствующая строка сохраняется из-за квадратных скобок и доступна с помощью \1
$ соответствует концу строки.
\s+?^ эта часть сопоставляет все пробельные символы (символы новой строки!) до начала следующей строки ==> Это удаляет символы новой строки после соответствующей строки, так что после замены не остается пустой строки.
(?=.*^\1$) это положительное прогнозное утверждение. Это важная часть в этом регулярном выражении, строка сопоставляется (и удаляется) только тогда, когда точно такая же строка следует в другом месте файла.
о, это блестяще, оно даже удаляет пустые строки, я макрос этого прямо сейчас :) В некоторых случаях он просто удаляет ВСЕ строки в файле. Есть ли способ удалить последнее событие? Это соответствует всем, кроме последнего . В моем случае, когда это решение убрало все строки, сняв галочку, . matches newline сделали свое дело . @SerG В некоторых случаях это не сработало и для меня, но когда я убрал «соответствует новой строке», это сработало :)Если строки располагаются сразу после друг друга, вы можете использовать регулярное выражение замены:
Возможно, другим повезло с этим, но для меня ^ (. * \ N) \ 1 приводит к «Не могу найти текст» @ b1naryatr0phy, убедитесь, что для «Режим поиска» установлено значение «Регулярное выражение», я также обновил шаблон, чтобы он мог обрабатывать окончания строк в стиле Windows notepad ++ имеет лёгкий движок регулярных выражений, он не допускает расширенных функций, даже «? или \ r \ n», так как он работает только в одной строке и вы используете $ для символов \ r \ n это устраняет один за другим. Вы должны повторить это много раз. Интересно, почему \ n + -> \ n не работает (хотя он сообщает о многих заменах) @Val, если вы сделаете часть обратной ссылки совпадения группой, для которой требуется 1 или более совпадений, шаблон будет соответствовать N смежным дублирующимся линиям одновременно: ^(.*\r?\n)(\1)+Notepad ++
Убедитесь, что в режиме поиска вы выбрали переключатель « Регулярное выражение »
Найти то, что:
Заменить:
Перед:
и мы думаем там
и мы думаем там
одна линия
Это возможно
Это возможно
После:
Разве файл не должен быть отсортирован, чтобы это работало?и мы думаем там
одна линия
Это возможно
Если вам не важен порядок строк (что, я думаю, вам не нужно), вы можете использовать Linux / FreeBSD / Mac OS X / Cygwin и сделать:
Затем снова откройте файл в Notepad ++.
Не работает на Windows 7. 'cat' is not recognized as an internal or external command, operable program or batch file. @Iain Elder: cat - это стандартная утилита Unix, поэтому в этом ответе указано, что она работает на linux, FreeBSD и MacOSX. Ответ также предполагает Cygwyn: это программа для Windows, которая предоставляет оболочку в стиле Unix, а вместе с ней и cat. Короче говоря (слишком поздно!): Win 7 нуждается в Cygwin для этого. В Windows у вас есть PowerShell: cat yourfile | sort -Unique Это хорошие примеры "безвозмездного использования кошки". Забудьте об утилите cat и просто используйте перенаправление файлов таким образом: sort <yourfile | uniq> yourfile_nodups @ scott8035, я согласен, что cat бесполезен для выполнения этой команды, но я часто нахожу полезным начинать с cat при вычислении длинной последовательности неочевидных команд, таких как cat file | сед . | сед . | Сед . и так далее. Поэтому я бы сказал, что могут быть причины для использования кошки. Конечно, кошка может быть удалена в конце, но некоторые слишком ленивы для этого.Последние версии Notepad ++, по-видимому, вообще не включают плагин TextFX. Чтобы использовать плагин для сортировки / устранения дубликатов, плагин должен быть либо загружен и установлен (более задействован), либо добавлен с помощью менеджера плагинов.
А) Простой способ (как описано здесь ).
Плагины -> Диспетчер плагинов -> Показать диспетчер плагинов -> вкладка «Доступно» -> Символы TextFX -> Установить
Б) Более сложный способ, если нужна другая версия или простой способ не работает.
Загрузите плагин от SourceForge:
Откройте zip-файл и распакуйте NppTextFX.dll
Поместите NppTextFX.dll в каталог плагинов Notepad ++, например:
C: \ Program Files \ Notepad ++ \ plugins
Запустите Notepad ++, и TextFX будет одним из пунктов меню файла (как видно из ответа №1 выше Колина Пикарда)
После установки плагина TextFX следуйте инструкциям в Ответе № 1, чтобы отсортировать и удалить дубликаты.
Кроме того, рассмотрите возможность настройки сочетания клавиш с помощью « Настройки»> «Сопоставление сокращений», если вы часто используете эту команду или хотите скопировать сочетания клавиш, такие как F9 в TextPad для сортировки.
В notepad ++ 7.6 этот плагин должен быть добавлен в C:\Users\<your_user>\AppData\Local\Notepad++\plugins\NppTextFX . Кроме этого это все еще работает отлично.В версии 7.8 это можно сделать без каких-либо плагинов - «Правка» -> «Операции со строками» -> «Удалить последовательные дубликаты». Вам нужно будет отсортировать файл, чтобы поместить повторяющиеся строки в последовательном порядке, прежде чем это сработает, но это работает как шарм.
Параметры сортировки доступны в меню «Правка» -> «Операции со строками» -> «Сортировка по . ».
Вам может понадобиться плагин для этого. Вы можете попробовать командную строку cc.ddl (удалить дубликаты строк) ConyEdit . Это кросс-редактор плагин для текстовых редакторов, в том числе Notepad ++.
Когда ConyEdit работает в фоновом режиме, выполните следующие действия:
- введите командную строку cc.ddl в конце текста.
- Скопируйте текст и командную строку.
- Вставьте, тогда вы увидите, что вы хотите.
пример
Поиск регулярного выражения: \b(\w+)\b([\w\W]*)\b\1\b
Замените это: $1$2
Хит заменить кнопку до тех пор, пока не останется больше матчей за регулярное выражение в файле.
Создал тестовый файл, чтобы попробовать это, но регулярное выражение не работало надежно, чтобы выполнить работу. Не могли бы вы привести пример, который не помог, чтобы я мог улучшить свой ответ?Никто не работал для меня.
Создал тестовый файл, чтобы попробовать это, но регулярное выражение не работало надежно, чтобы выполнить работу. Для всех моих данных, это работало отлично. Я забыл, каково было мое решение. Добавьте больше деталей, где это не удалось, чтобы другие люди могли улучшить это регулярное выражение. Я создал файл, чтобы в каждой строке было целое число от 0 до 999, в случайном порядке, иногда с дубликатами. Он не удалял большинство дубликатов и не удалял дубликаты, которые не были последовательными. Пожалуйста, предоставьте 2 примера для работающих и для неработающих. Это поможет кому-то.Может быть, есть другой плагин, который содержит необходимые функции. Кроме этого, единственный способ сделать это в Notepad ++ - это использовать какое-то специальное регулярное выражение для сопоставления и затем заменить ( Ctrl + F → Заменить вкладку).
Хотя есть много функций, доступных через пункт меню Edit (обрезка, удаление пустых строк, сортировка, преобразование EOL), «уникальная» операция недоступна.
Я просмотрел несколько вопросов здесь, и я приблизился к получению ответа, однако некоторые из них делают полную противоположность того, что мне нужно, чтобы они делали. Это на самом деле хороший знак, поскольку он показывает, что я делаю некоторые успехи.
Что я пытаюсь сделать, это сделать массивный список адресов электронной почты из базы данных, которую я нашел. Каждая строка содержит произвольный текст до и после адресов электронной почты, для которых у меня нет практического применения, и я хотел бы избавиться от них, чтобы у меня был чистый список адресов электронной почты.
Каждая строка выглядит примерно так: (Мне пришлось подвергать цензуре некоторую информацию)
Каждая строка в точности такая, и мне нужен способ удалить все до и после того, что помечает регулярное выражение.
В этот вопрос, я нашел регулярное выражение, которое выбирает все электронные письма отлично.
Решение
Я просмотрел несколько вопросов здесь, и я приблизился к получению ответа, однако некоторые из них делают полную противоположность того, что мне нужно, чтобы они делали. Это на самом деле хороший знак, поскольку он показывает, что я делаю некоторые успехи.
Что я пытаюсь сделать, это сделать массивный список адресов электронной почты из базы данных, которую я нашел. Каждая строка содержит произвольный текст до и после адресов электронной почты, для которых у меня нет практического применения, и я хотел бы избавиться от них, чтобы у меня был чистый список адресов электронной почты.
Каждая строка выглядит примерно так: (Мне пришлось подвергать цензуре некоторую информацию)
Каждая строка в точности такая, и мне нужен способ удалить все до и после того, что помечает регулярное выражение.
В этот вопрос, я нашел регулярное выражение, которое выбирает все электронные письма отлично.
Кроме того, на этот вопрос, который я нашел что-то, чтобы положить в Заменить поле Notepad ++, и он удаляет электронные письма и оставляет все, кроме электронных писем. Итак, по сути, мне нужно что-то, что делает прямо противоположное этому.
Кроме того, есть около 10 миллионов строк (База данных 844 МБ) пройти, поэтому он должен быть в основном автоматизированным и простым, чтобы сэкономить время.
Другие решения
Техника, которая может вам помочь, состоит из двух шагов:
во-первых, вы должны поместить свое регулярное выражение внутри (?s)^.*?(YOUR_REGEX)[^\n]* (введите его в Найти то, что поле), и используйте \1 (обратная ссылка на текст, захваченный с вашим исходным рисунком) в Заменить поле.
затем вручную удалите ненужный текст.
Итак, в вашем случае используйте
Оптимизация это немного (учтите, что [A-Za-z0-9_] можно заменить на \w здесь), вы можете использовать следующее регулярное выражение с . matches newline опция ВКЛ:
объяснение:
Как указано в комментарии @stribizhev , Мне нужно сделать следующее:
1: Добавьте следующее регулярное выражение в Найти то, что коробка:
2: Добавьте следующее к Заменить коробка:
И это все! Спасибо всем большое!
Если ваш файл отформатирован и отделен : , может быть, это регулярное выражение работает лучше для вас:
У меня есть текстовый файл и вы хотите сохранить строки, начинающиеся с <Path> , и удалить все остальные строки.
Как я могу это сделать?
Существует простой способ добиться этого. Вам нужно выполнить 3 шага.
Перейдите в меню поиска> Найдите . > Выберите вкладку «Отметить». Активируйте регулярные выражения. Найдите ^<Path> ( ^ для начала строки). Не забудьте проверить «закладки линий» и нажать «Отметить все»
== > Все строки, которые вы хотите сохранить, получили закладку
Перейдите в меню «Поиск - Закладка - Обратная закладка»
== > Все строки, которые вы хотите удалить, отмечены закладкой.
Перейдите в меню «Поиск - Закладка - Удалить закладки»
== > Все заблокированные строки удаляются.
Это можно сделать в два этапа с 6.3. Я думаю, что это можно сделать раньше, чем у меня было 5.9, когда я впервые попробовал это.
Используя пост stema в качестве основы для этого ответа. Сейчас еще один шаг. Отметьте линии и удалите немаркированные строки. Готово. Ниже приводятся подробные инструкции.
Меню поиска «Найти». В диалоговом окне «Найти» перейдите на вкладку «Отметить». Активируйте регулярные выражения. Найти ^ (^ для начала строки). Не забудьте проверить «закладки линий» и нажать «Отметить все»
== > Все строки, которые вы хотите сохранить, получили закладку
Меню поиска -> Закладка -> Удалить немаркированные строки.
== > Все NON Закладочные строки удаляются.
Двухэтапный вариант
заменить тест на запрошенный текст
Вариант с одним шагом
Используйте ^(?!<Path>).*\r\n для замены совпадений с пустой строкой. Обобщенная версия будет ^(. *?test).*\r\n . Это не удалит пустую строку в конце файла. Все остальные строки удаляются, включая несколько последовательных пустых строк.
Объяснение:
(?!) - это негативный взгляд. ^.*test.*$ выбирает всю строку, содержащую запрошенный текст.
Мне кажется, что самый простой способ - просто использовать функцию «Найти все в текущем документе», а затем либо скопировать результаты в новый файл, либо выбрать все и заменить в текущем.
Это найдет все строки, содержащие ваш текст, и перечислит их внизу. Просто щелкните правой кнопкой мыши по результату поиска и скопируйте /вставьте.
Перейдите в меню Поиск -> Найти . -> Активируйте регулярные выражения. Найдите «^ Путь " (^ для начала строки).
Появится окно «Найти результат» со всеми строками шаблона. Выберите копию /вставьте их на новую вкладку в Notepad ++.
На этой новой вкладке перейдите в: menu Поиск -> Заменить . -> Активировать регулярные выражения.
В поле «Найти что:» используйте шаблон: «Линия \ d +:». Оставьте поле «Заменить на:» пустым.
Если вы действительно хотите сопоставить <Path> , а не путь к файловой системе, вы можете попробовать это из командной строки с помощью Perl:
Он работал с Strawberry Perl в Windows, поэтому соответствующим образом настраивайте, если результаты не соответствуют тем, что вы ожидаете.
Это неуклюже, но скопируйте все это в Excel , а затем используйте =IF(LEFT(A1,6)="<Path>",A1,"") и копировать эту формулу до конца. Затем скопируйте его обратно в Notepad ++. Это не идеально, но это довольно легко (если у вас есть Excel). Предупреждение: он не будет работать с отступом (Excel сдвинет столбцы и т. Д.).
Нет простого способа сделать то, что вы хотите, с помощью Notepad ++. Вам нужно либо загрузить программу на компьютер, либо скрипт что-то в VB (я предполагаю, что вы в Windows).
Удалить все строки, не содержащие:
sed -i '/^<PATH>/!d' file
Распечатайте все строки, содержащие новый файл:
sed -n '/^<PATH>/p' file > newfile
Пример: sed -n '/^\/var\/www/p' file > newfile
Это напечатает все строки, начинающиеся с '/var /www'. Если бы я подал, чтобы избежать символа /, команда вывела бы ошибку. Вы можете избежать специального символа (например, /) с символом обратной косой черты \.
Используйте Search-> Замените и введите регулярное выражение, например ^[^ ].* , и замените все на пустую строку, используя Regular expression . Следующий шаг - найти пустые строки, которые ищут замену \n\n с помощью \n с помощью Extended несколько раз, пока не будут найдены вхождения 0 occurrences were found. (используйте \r\n\r\n и \r\n в зависимости от формата файла). Если у вас очень много пустых строк в строке, более оперативно использовать \n\n\n\n\n\n\n или даже больше \n : s в строке поиска.
Читайте также: