Видалити рядки з більш ніж 3 словами?


-1

Я намагаюся видалити рядки, що містять більше 3-х слів у Блокноті ++. Я не можу знайти в Google слово вираз "слово", і не можу використовувати "кількість символів", як це не було б можливо.


1
Ви запускаєте це в Windows? Яка версія? Або це щось інше?
mdpc

Шукаєте спеціально рішення для блокнота ++ чи приймете інші варіанти? Це завдання не складе труднощів з низкою мов сценаріїв.
MaQleod

@mdpc Я запускаю його на Windows 7 64bit, блокнот ++ - v6.5.5.
Майкл Дельвеге

@MaQleod інші варіанти прекрасні, доки вони не складні.
Майкл Дельвеге

Ось як ви могли це зробити в PowerShell:gc in.txt | ? { ($_ -split "\s").Count -le 3 } | sc out.txt
dangph

Відповіді:


2

У Блокноті ++ ви можете виконати пошук-заміну наступним регулярним виразом: Знайдіть що: ^\S+[ \t]+\S+[ \t]+\S+.*(\r\n)? Замініть на: (нічого)

Зніміть прапорець "Обернути навколо", пошукайте в режимі пошуку "Регулярне вираження".

Пояснили:

Ведучий ^означає початок рядка.

\Sвідповідає символам, що не містять пробілів; тому \S+відповідає послідовним символам без пробілу, тобто слова.

[ \t]+ відповідає пробілам і вкладкам (им) як межі слів.

.*означає будь-які символи; перед нами вже три слова, тому ми просто включаємо все, поки не досягнемо нового рядка.

\r\n означає новий рядок для файлів Windows.


То куди саме йде (3) за кількістю слів?
Майкл Дельвеге

Для простоти я важко закодував регулярний вираз. Ви побачите, що візерунок \S+повторюється 3 рази, кожен з них розділений за [ \t]+шаблоном. Якщо ви хочете зробити його більш гнучким, ви можете внести зміни в цю частину (\S+[ \t]+){2}\S+. {2}означає попередній зразок, укладений в дужки, повторюваний два рази, додаючи остаточне \S+внесення в три.
Кеннет Л

1
Від Маркова : \ r \ n означає новий рядок для файлів Windows. Якщо ваш файл кодується, наприклад, як UTF8 (можливо, найпоширеніший сьогодні), розрив рядка буде тільки \ n (не \ r \ n). Звідси код Кеннета повинен стати:^\S+[ \t]+\S+[ \t]+\S+.*(\n)
fixer1234

0

Чи можу я сприяти цьому? Як сказав Кеннет, \ r \ n означає новий рядок для файлів Windows. Якщо ваш файл кодується, наприклад, як UTF8 (можливо, найпоширеніший сьогодні), розрив рядка буде тільки \ n (не \ r \ n). Звідси код Кеннета повинен стати:

^\S+[ \t]+\S+[ \t]+\S+.*(\n)

Це не гарний пост. Усі ваші зміни досягаються обмеженням використання іншої посади.
Дейв

Відповіді призначені для вирішення. Обговорення іншої відповіді має пройти в коментарі. Я пішов вперед і скопіював це в коментар для вас. Ви можете видалити цю публікацію, щоб вона не залучала голоси.
fixer1234

Дейв, неправильно. Моя публікація розширює використання рішення Кеннета поза файлами, кодованими Windows, де код Кеннета не працюватиме.
Марків
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.