Как удалить строки без «.» в блокноте ++? [Дубликат]

11

В Notepad ++ у меня много строк в формате:

abc.xyz

где «abc» может иметь пробел или - или цифры.

Как удалить строки без "."? Поэтому, если в строке нет «.», Я хочу, чтобы она была полностью удалена, даже не оставляя пустую строку.

Чен Статс Ю
источник

Ответы:

40

Как удалить строки без .?

  • Меню «Поиск»> «Заменить» (или Ctrl+ H)

  • Установите «Найти что» ^[^\.]*\r\n

    • Вы можете заменить \r\nразличными регулярными выражениями EOL (Конец строки) в зависимости от EOL в вашем файле (см. «У меня есть другой EOL в моем файле, что я могу сделать?» И «Мне все равно, какие EOL использует мой файл»). «Что я могу сделать?» ниже).
  • Очистить "Заменить на"

  • Включить «Регулярное выражение»

  • Нажмите «Заменить все»

    Образ

Примечания:

  • Выше предполагается, что последняя строка в файле имеет завершающий EOL.

  • Вышесказанное также предполагает , что вы редактируете текстовый файл с EOL в Windows, \r\n.

До :

abc.xyz
abcdef
abc 123.xyz
abc 123def

После :

abc.xyz
abc 123.xyz

У меня есть другой EOL в моем файле, что я могу сделать?

  • Windows EOL есть \r\n.

  • Если вы используете файлы с другим EOL, вы можете преобразовать их в Windows EOL, используя меню «Правка»> «Преобразование EOL».

  • Если вы не работаете с Windows EOL и не хотите преобразовывать их, используйте следующее:

    • Используйте \nвместо \r\nEOL для Unix / OS X

    • Используйте \rвместо \r\nMac OS (до версии 9) EOL


Я не знаю или мне все равно, какие EOLs использует мой файл, что мне делать?

  • Вы можете использовать \Rили (?:\r\n?|\n)или (?:\r?\n?)вместо \r\n. Это позволяет обойти любую проблему с EOL, фактически используемыми в файле.

  • Вы также можете использовать (?:\r?\n?|$). Это выражение будет работать, если в последней строке файла нет EOL.


дальнейшее чтение

ДэвидПостилл
источник
5
Вы можете использовать \ R для соответствия любому переводу строки.
user694733
@ user694733 Пожалуйста, объясните? \rне соответствует EOL в Windows. Если вы удалите, \nвы останетесь с пустыми строками. OP Stated «Я хочу, чтобы он был удален полностью, даже не оставляя пустую строку».
ДэвидПостилл
Прописные буквы R. N ++ использует PCRE, который имеет этот класс специальных символов, если память мне не изменяет.
user694733
@ user694733 Ах. OK. Протестировал и все работает.
ДэвидПостилл
regex101.com - лучший сайт для изучения регулярных выражений, чем regexexr
кошка
14

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

  1. Ctrl+ F- нажмите на вкладку Mark
  2. Установите «Найти что» .
  3. Проверьте опцию «Закладка линии» (любезно предоставлено Wrass)
  4. Режим поиска = Нормальный
  5. Нажмите Пометить все -> Вы должны увидеть синий кружок рядом с отмеченными номерами строк.
  6. Затем перейдите в меню «Поиск» -> «Закладка» -> «Удалить неотмеченные строки».
Zikato
источник
Это хорошая простая альтернатива, однако вы можете упомянуть, что вам также следует проверить опцию «Закладка линии» в диалоговом окне «Пометить». В противном случае все строки будут удалены.
Wrass
Хороший вопрос, мой блокнот запомнил это с прошлого раза, поэтому я забыл об этом.
Zikato
Я все время использую регулярные выражения, но я бы все равно использовал этот метод для его простоты. Отказ от ответственности: я также часто использую различные функции закладок в Notepad ++.
JPhi1618
Поскольку вы были недовольны вашим форматированием, я отправил правку, которая, на мой взгляд, окажется более приятной. Не стесняйтесь отклонить его или откатиться, если вы не согласны.
jpmc26