Видалити рядки з більш ніж 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.