Поиск одинаковых значений notepad

Обновлено: 06.07.2024

егулярное выражение – это шаблон текста, который состоит из обычных символов (например, букв от а до я) и специальных символов, известных как метасимволы. Шаблон задает правила поиска и может осуществлять различные манипуляции с текстом.

Далее приведены метасимволы и их значение, а затем уже примеры применения.

Mетасимволы и их значение

Mетасимволы и их значение
Символ Описание
. Точка представляет один любой символ
^ Начало строки
$ Конец строки
^$ Пустая строка (начало и конец, между которыми пусто)
.+ Любая не пустая строка
\s Пробел
\S Не Пробел
\w Буква, цифра или подчеркивание
\d Любая цифра
\D Любой символ, но не цифра
2 Любая цифра
[a-z] Любая буква от a до z (латинский набор символов) в нижнем регистре 1
[а-я] Любая буква от a до я (русский набор символов) в нижнем регистре 1
[A-Z] Любая буква от a до z в ВЕРХНЕМ регистре 1
[А-Я] Любая буква от А до Я в ВЕРХНЕМ регистре 1
* «Повторитель». Означает, что предшествующий символ может повторяться (0 или более раз)
.* Абсолютно любой набор символов. Например, условие <p>.*</p> найдет любой текст между тегами <p> </p>
(^.*$) Любой текст между началом и концом строки

Примеры применения метасимволов для поиска

Примеры применения метасимволов для поиска
Пример Описание
(72*.) ищет любые цифры, в данном случае двухзначные цифры
\n ищет символ новой строки
\r ищет пустые строки содержащий символы «перевод каретки»
^$ ищет пустые строки
\n\r ищет пустые строки содержащий символы – символ новой строки и «перевод каретки»
\s ищет класс пробельных символов. К пробельным символам относятся пробел, символ табуляции, возврат каретки, символ новой строки и символ перевода страницы. То же самое, что и [ \t,\r,\n,\f]
\S ищет класс не пробельных символов. То же самое, что и [^ \t,\r,\n,\f]
^\s*$ ищет пустые строки содержащие пробел 2
^[ ]*$ ищет пустые строки содержащие пробел 2
^Тест ищет слово Тест в начале строки
Тест$ ищет слово Тест в конце строки
\bтом ищет набор символов том только в начале слов, то есть в слове Томск будет найдено, а в слове Потом нет
том\b ищет набор символов том только в конце слов, то есть в слове Томск не будет найдено, а в слове Потом будет
\Bтом\B ищет набор символов том не в начале и не в конце слов, то есть в слове Томск не будет найдено, и слово Потом также будет проигнорировано, а вот в словах Автоматизация , Хрестоматия будет найдено
Маша|Оля ищет все заданные слова в тексте. Например, нужно найти определенные имена в тесте - Маша и Оля, вечером собирались в кино, но встретив Сашу и Пашу, Маша ушла с Пашей на концерт, а Оля с Сашей решили погулять в парке. Найдет все слова Маша и Оля, то есть четыре совпадения.

1, 2 Часть примеров уже устарела, notepad++ совершенствуется и часть примеров делается стандартными командами. Например, конструкции вида [а-яА-Я] - искать в любом из регистров потеряли смысл, а явное указание на регистр при снятом чек-боксе будет проигнорировано и будут найдены все вхождения в верхнем и нижнем регистрах.

«Удалить пустые строки содержащие пробел» сейчас выполняется через меню «Правка» – «Операции со строками». Но с их помощью можно разрабатывать свои шаблоны поиска и замены.

Notepad++ стал моим первым профессиональным инструментом в веб-разработке и создании сайтов.

В Notepad++, среди прочего, большое внимание уделяется собственному языку регулярных выражений.
Зная как обозначить запрос специальными поисковыми операторами, в Notepad++ можно реализовывать довольно серьезные задачи и работать с большими массивами данных.

Регулярные выражения Notepad++

Регулярные выражения могут использоваться в Notepad++ для множества логических операция: сортировка строк, удаление дубликатов, поиск и замена как отдельных символов, так и целых логических конструкций. По сути горизонт возможностей такого функционала не ограничен и зависит только от вашей фантазии по его применению.
Я позволил себе отсортировать регулярные выражения для Notepad++ в порядке их надобности и популярности использования. ?

Примеры и применение регулярных выражений в Notepad++

Согласитесь, весь этот список на вид звучит довольно нудно и напоминает что-то среднее между высшей математикой и программированием. ? Мне стоит привести примеры использования регулярных выражений и символов Notepad++.

Удалить пустые строки в Notepad++

Либо, что конечно же проще, если ваше выражение больше никаких условий не требует, воспользуйтесь пунктом в меню. Edit => Line Operations => Remove empty lines . Там же есть и пункт для удаления пустых строк с пробелом: Containing Blank Characters .

Удалить всё после символа / перед символом в строке в Notepad++

Регулярное выражение удаление всех данных в строке до определенного символа, или их группы я часто использую, например, при сортировке маркетинговых баз с e-mail.

Для того чтобы в Notepad++ удалить всё в строке перед определенным символом, используйте комбинацию .+(искомая-часть). Давайте я разберу подробнее. Например, у нас есть txt файл с почтовыми адресами коллег, по одному адресу в столбик. Кроме того в этой же строке могут содержаться и ФИО человека через пробел, табирование, или через запятую.

И таких контактов с списке у нас 500. Для того чтобы отделить домены, нам понадобится 2 действия в Notepad++, удалить всё в строках до определенного символа, а затем удалить всё в строках после.

Первая регулярное выражение для нас будет .+(@), в поле замены оставляем пустым.

Удалить дубликаты строк в Notepad++

Удаление дубликатов строк в Notepad++ это вообще отдельная большая тема. Мало кто знает как сконфигурировать поисковой запрос в текстовом редакторе и удалить повторяющиеся строки исключительно через Notepad++, не прибегая к помощи плагинов и сторонних расширений.

Важно, чтобы все галочки в поиске у вас были включены. И зациклить поиск, и применять регулярные выражения, тогда Notepad++ точно сработает как надо, и удалит из документа дубли строк.

Второй способ избавится от дублирования строк

Второй способ удалить дубликаты строк с помощью Notepad++ абсолютно не элегантен, но функционален при ежедневном использовании. Навигатор по репозиторию дополнений встроен прямо в ваш Notepad. Просто ставим плагин через меню Plugins => Plugin manager .
Нужный нам плагин называется TextFx Characters.
Не слишком сложно, правда? Устанавливаются плагины автоматически, нужно будет только перезагрузить утилиту. Жмёте установить и активировать.

Функционал плагина местами дублирует многие регулярные выражения в Notepad++, а по-моему мнению собственно на них и основан.

Настройка для удаления дубликатов строк находится в меню: Textfx => Tools => Sort Lines insensetive .

Не забудьте выделить данные в редакторе, перед тем как нажимать.

Notepad++: плагины и альтернативы.

Что касается альтернатив, Notepad++ любят за регулярные выражения, легкость, простоту и бесплатность. Такое сочетание вообще, пожалуй, единственное в этом кластере, потому лично я не вижу прямых конкурентов и альтернатив для Notepad.

P.S. Если вам была полезна эта статья, оставьте коммент, и я буду знать что двигаюсь в правильном направлении. Или задавайте вопросы! welcome ⬇️⬇️⬇️

Сайт обходится мне в копеечку, и как видите - здесь нет рекламы.
Понравилась статья?
Переведите хотя бы 10 руб:-)
P.S. Если нажать на номер карты - он скопируется!


Фотограф, блогер, специалист по рекламе в интернете. В прошлом веб-дизайнер/разработчик. Веду своё шоу в VK Клипах, люблю рок, джаз, Стивена Кинга и Харуки Мураками.

Феликс Клинг отлично справился с написанием ответа для людей, использующих jQuery для AJAX, я решил предоставить альтернативу для людей, которые этого не делают.

Это краткое резюме «Объяснение проблемы» из другого ответа, если вы не уверены, прочитав это, прочитайте это.

A в AJAX означает асинхронность. Это означает, что отправка запроса (или, скорее, получение ответа) вынимается из обычного потока выполнения. В вашем примере .send немедленно возвращается, а следующий оператор return result; выполняется до того, как функция, которую вы передали, когда был вызван обратный вызов success .

Это означает когда вы возвращаетесь, слушатель, который вы определили, еще не выполнил, что означает, что возвращаемое вами значение не было определено.

Вот простая аналогия

Возвращаемое значение a - undefined так как часть a=5 еще не выполнена. AJAX действует так, вы возвращаете значение до того, как сервер получил возможность сообщить вашему браузеру, что это за значение.

Одним из возможных решений этой проблемы является код повторно активно , сообщая вашей программе, что делать, когда расчет завершен.

Это называется CPS . В основном, мы передаем getFive действие, которое необходимо выполнить, когда оно завершается, мы сообщаем нашему кодексу, как реагировать, когда событие завершается (например, наш вызов AJAX или в этом случае время ожидания).

Который должен предупредить «5» на экране. (Fiddle) .

Существуют два способа решения этой проблемы:

  1. Сделать AJAX синхронный вызов (позволяет называть его SJAX).
  2. Реструктурируйте свой код для правильной работы с обратными вызовами.

1. Синхронный AJAX - Не делайте этого !!

Что касается синхронного AJAX, не делайте этого! Ответ Феликса вызывает некоторые веские аргументы в пользу того, почему это плохая идея. Подводя итог, он заморозит браузер пользователя, пока сервер не вернет ответ и не создаст очень плохой пользовательский интерфейс. Вот еще краткое резюме из MDN о том, почему:

2. Код реструктуризации

Пусть ваша функция принимает обратный вызов. В примере код foo может быть сделан для принятия обратного вызова. Мы сообщим нашему кодексу, как отреагировали , когда foo завершает работу.

Итак:

Становится:

Здесь мы передали анонимную функцию, но мы могли бы так же легко передать ссылку на существующую , чтобы он выглядел следующим образом:

Для получения дополнительной информации о том, как выполняется этот вид обратного вызова, проверьте ответ Felix.

Теперь давайте определим сам foo, чтобы действовать соответственно

(скрипка)

Теперь мы сделали нашу функцию foo принять действие, которое будет выполняться, когда AJAX завершится успешно, мы можем продолжить это, проверив, не является ли статус ответа не 200 и действует соответственно (создайте обработчик сбоя и т. д.). Эффективное решение нашей проблемы.

Если вам все еще трудно понять это , прочитайте руководство по началу работы AJAX в MDN.

Я хотел бы знать, есть ли способ поиска файла для двух вещей в одной строке. Например, если я хочу найти строку с " variable > = "и "variable>=". Проблема в том, что я не знаю, что такое "переменная" (ну, в файле много разных переменных, и я ищу проверку дубликатов переменных в одной строке).

может кто-нибудь помочь мне с этим?

у вас есть несколько вариантов.

в любом случае перед началом:

  • откройте диалоговое окно" найти "(Ctrl + f) или" заменить " (если вы знаете, что вы хотите сделать дальше),
  • выберите переключатель "регулярное выражение"в левом нижнем углу диалогового окна.
  • здесь, я буду предполагать, что вы ищете дубликаты шаблонов, таких как variable >= something или hour >= NUM .
  • кроме того, я в группе как можно больше, так что вы можете позже смогу замените путем держать, или бросать прочь, любую часть как нужно.

(1) Явное Найти

вы знаете дубликаты, и вы можете найти их явно, например:

или, для "час", просто замените слово "переменная" на слово "час":

объяснение:

каждый набор скобок, слева направо, - это группа. Поэтому, вы будете иметь следование:

Группа 1: ((variable)\s*>=\s*\S+) : находит строку, начинающуюся с" variable", за которой следует \s (пробел) и * означает любое количество пробелов (следовательно, вы можете иметь "variable>=" или " variable> переменная".

Группа 3: (.*) : что-нибудь между двумя дубликатами вы найдете. Это позволяет сделать что-то с этим дополнительным текстом, если он существует.
Предупреждение, если есть трипликаты (или больше), это будет потребитель шаблоны в середине, делая group1 и group4 содержат только первый и последний дубликаты. Если вы хотите найти последовательные дубликаты, то измените эту часть на (.*?) ; the ? делает его не жадным, т. е. найдет минимум . (ничего).

4 группа: (\s*>=\s*\S+) : наконец, это дублировать. Причина его дубликат, потому что узор такой же, как и группы 1, Кроме того, он использует , это просто способ сказать, что находится в группе 2. В данном случае это слово "переменная".

вторая картина для "часа" по мере того как вы увидите идентична, за исключением того, что он ищет "час", а не"переменную".

(2) Найти Неизвестные Повторяющиеся Узоры

С небольшими изменениями, вы можете искать любые дубликаты одного и того же шаблона:

объяснение:

это идентично поиску дубликатов с явно известными именами. Разница здесь заключается в использовании \w+ (любые буквы и слова), а не слово "переменная"/"час".

\w+ : \w соответствует любому символу слова (включая прописные, строчные и цифры, но не знаки препинания или другие символы). The + снова так сказать, по крайней мере, один. Поэтому, с \w+ вы найдете любые буквы слова.

Можно ли удалить дублированные строки в Notepad ++, оставив только одно вхождение строки?

Notepad ++ может сделать это, если вы хотите сортировать по строкам и одновременно удалять дублирующиеся строки.

Вам понадобится плагин TextFX. Раньше это было включено в более старые версии Notepad ++, но если у вас более новая версия, вы можете добавить ее из меню, перейдя в Plugins -> Plugin Manager -> Show Plugin Manager -> Available tab -> TextFX -> Install . В некоторых случаях это тоже можно назвать TextFX Characters , но это одно и то же

Флажки и кнопка требуются теперь появятся в меню в разделе: TextFX -> TextFX Tools .

Убедитесь, что «сортировать выходные данные только уникальные . » отмечен. Далее выберите блок текста ( Ctrl +, A чтобы выделить весь документ). Наконец, нажмите «сортировать строки с учетом регистра» или «сортировать строки с учетом регистра»

расположение меню в n ++

Невероятно мощный плагин, несмотря на его «возраст». Надеюсь, они НИКОГДА не уберут его из стандартного предложения плагинов для АЭС. Парень, который думал обо всех возможностях этого плагина, был своего рода «провидцем». А как насчет Notepad ++ x64 версии? Плагин TextFX x64-версии не существует @Geograph И не будет 64-битного плагина TextFx, см. Эту заметку . Поэтому было бы хорошо узнать, есть ли альтернативный плагин, обеспечивающий сортировку и удаление дубликатов.

Начиная с версии 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 работает в фоновом режиме, выполните следующие действия:

  1. введите командную строку cc.ddl в конце текста.
  2. Скопируйте текст и командную строку.
  3. Вставьте, тогда вы увидите, что вы хотите.

пример

Поиск регулярного выражения: \b(\w+)\b([\w\W]*)\b\1\b

Замените это: $1$2

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

Создал тестовый файл, чтобы попробовать это, но регулярное выражение не работало надежно, чтобы выполнить работу. Не могли бы вы привести пример, который не помог, чтобы я мог улучшить свой ответ?

Никто не работал для меня.

Создал тестовый файл, чтобы попробовать это, но регулярное выражение не работало надежно, чтобы выполнить работу. Для всех моих данных, это работало отлично. Я забыл, каково было мое решение. Добавьте больше деталей, где это не удалось, чтобы другие люди могли улучшить это регулярное выражение. Я создал файл, чтобы в каждой строке было целое число от 0 до 999, в случайном порядке, иногда с дубликатами. Он не удалял большинство дубликатов и не удалял дубликаты, которые не были последовательными. Пожалуйста, предоставьте 2 примера для работающих и для неработающих. Это поможет кому-то.

Может быть, есть другой плагин, который содержит необходимые функции. Кроме этого, единственный способ сделать это в Notepad ++ - это использовать какое-то специальное регулярное выражение для сопоставления и затем заменить ( Ctrl + F → Заменить вкладку).

Хотя есть много функций, доступных через пункт меню Edit (обрезка, удаление пустых строк, сортировка, преобразование EOL), «уникальная» операция недоступна.

Читайте также: