Блокнот ++: как удалить все строки, кроме периода - PullRequest
3 голосов
/ 28 июня 2019

У меня есть множество SELECT операторов, соединенных ключевым словом UNION в одном файле.Что я хочу сделать, это извлечь только все строки db.table?Как я могу удалить все слова, не содержащие точку (.), Используя регулярные выражения в редакторе блокнота ++?База данных и таблица - единственные с периодом.

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

db.table1
db.table2
...
db.tablen

Ответы [ 2 ]

3 голосов
/ 28 июня 2019

Вы можете попробовать найти и заменить следующее в режиме регулярных выражений:

Find:    (?<=^|\s)[^.]+(?=$|\s)
Replace: <empty string>

Демо

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

Редактировать:

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

(^[^.]+$)|(^[^.]+(?=\s))|((?<=\s)[^.]+$)|((?<=\s)[^.]+(?=\s))

Демо

Логика в обоихПриведенные выше шаблоны должны соответствовать слову, состоящему полностью из не точечных символов, которые с обеих сторон окружены одним или несколькими из следующих элементов:

  • начало строки (^)
  • конец строки ($)
  • любой тип пробела (\s)
0 голосов
/ 28 июня 2019

Я думаю, что, возможно, это выражение:

([\s\S]*?)(\S*(\.)\S*)

заменяется на $2\n или:

(\S*(\.)\S*)|(.+?)

с $1 может работать.

Демо 1

Демо 2

...