Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 1
Регистрация: 20.08.2016
Сообщений: 15
1

Удаление слов с заглавной буквы

17.08.2017, 19:47. Показов 1100. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго вечера форумчане.
Возникла проблема.
В .тхт файле нужно удалить все слова начинающиеся с заглавной.
Нашел как удалять строки содержащие заглавные символы. Но это не то что надо.
Как решить данную проблему?
Заранее благодарен за ответы и помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2017, 19:47
Ответы с готовыми решениями:

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

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

Посчитать в тексте количество слов с заглавной буквы
сколько в заданом тексте собственных имен? :-|немогу написать код в лабе.. в итоге программа...

Подсчитать сколько слов начинается с заглавной буквы
Подсчитать сколько слов начинается с заглавной буквы.

8
Любознательный
6546 / 1913 / 333
Регистрация: 10.03.2016
Сообщений: 4,355
18.08.2017, 09:53 2
Цитата Сообщение от Avatarik Посмотреть сообщение
нужно удалить все слова начинающиеся с заглавной.
Windows Batch file
1
2
3
4
5
6
7
@echo off
set "f_in=test.txt"
set "f_out=test_out.txt"
echo Выполняем...
powershell -executionpolicy bypass "&{(gc %f_in% -raw -enc UTF8) -creplace '\b[А-ЯЁA-Z]\w+\b' >'%f_out%'}"
echo Готово.
pause
1
6242 / 2117 / 334
Регистрация: 10.12.2013
Сообщений: 7,293
18.08.2017, 10:35 3
всё так, только эту ерунду с перечислением A Z Я и ё заменить на unicode properties
Perl
1
\b\p{Lu}\p{L}+\b
0
Любознательный
6546 / 1913 / 333
Регистрация: 10.03.2016
Сообщений: 4,355
18.08.2017, 12:46 4
volodin661, сомневаюсь, что та "ерунда" чем-то хуже этих модных \p{}, ибо работают они не везде, а если работают, то абы как, но только не так как задумывалось. Во всяком случае в PoSh, совместно с границей слова, они вообще не работают, только вот так "\p{Lu}\p{Ll}", причем цифры ведь не захватываются, что в данном случае нежелательно... в общем, старые добрые символьные классы понадежнее будут.
2
6242 / 2117 / 334
Регистрация: 10.12.2013
Сообщений: 7,293
18.08.2017, 16:27 5
Цитата Сообщение от YuS_2 Посмотреть сообщение
чем-то хуже этих модных \p{}, ибо работают они не везде
Цитата Сообщение от YuS_2 Посмотреть сообщение
причем цифры ведь не захватываются, что в данном случае нежелательно

а) мода на Unicode существует более 20 лет, можно привыкнуть.
б) формально у ТС не было указано ни про кириллицу, ни про латиницу.
в) я не могу утверждать, что тщательно тестировал реализацию Unicode в regex в C# и powershell,
но если к данному инструменту в этой части есть претензии, то нужно поменять инструмент.
г) про желательность захвата цифр у ТС нет ни слова, но можно \p{L} заменить на \w
д) 'ерундой' я называю призыв запоминать информацию по особенностям размещения алфавитных символов
внутри всех национальных диапазонов Unicode; вот не хочется мне помнить, что кириллическом диапазоне ё и Ё выпадают или украинская i выпадает или македонская Ѓ выпадает.
2
Эксперт Python
5434 / 3857 / 1215
Регистрация: 28.10.2013
Сообщений: 9,553
Записей в блоге: 1
18.08.2017, 16:55 6
Цитата Сообщение от YuS_2 Посмотреть сообщение
работают они не везде, а если работают, то абы как, но только не так как задумывалось
Почему не работают? Я сколько раз их в C# использовал - не помню, чтобы они как-то не так работали.
Вот здесь, например, все работает ожидаемым образом (хотя с границей слова \b, хоть без нее):
PowerShell
1
2
'Однажды в студеную Зимнюю пору' -creplace '\b\p{Lu}\p{L}+\b'
>> в студеную  пору
А Unicode блоки и категории, коих в .NET огромнейшее число, сильно упрощают создание регулярных выражений для парсинга специфических диапазонов символов. В том же python движок regex их не поддерживает и мне вместо короткого именованного блока приходится указывать весь диапазон кодов нужных символов, что очень неудобно. -)
3
Любознательный
6546 / 1913 / 333
Регистрация: 10.03.2016
Сообщений: 4,355
18.08.2017, 18:03 7
Цитата Сообщение от Garry Galler Посмотреть сообщение
Вот здесь, например, все работает ожидаемым образом (хотя с границей слова \b, хоть без нее)
PowerShell
1
(gc test.txt -raw -enc UTF8) -creplace '\b\p{Lu}\p{Ll}+\b'
test.txt - UTF8 без BOM :
Код
слово1 слово2 слово3 слово4
Слово1 слово2 слово3 слово4
слово1 Слово2 слово3 слово4
слово1 слово2 Слово3 слово4
слово1 слово2 слово3 Слово4

cлово1 1слово2 vслово3 tслово4
Ёлово1 ёслово2 Ьслово3 слово4
- увы, не работает...

Добавлено через 7 минут
Да, сорри, моя ошибка... и не должно работать было, сочинял на скорую руку, не проверив...
там везде цифры же, это меня и сбило.

Добавлено через 5 минут
Вот так, надо было:
PowerShell
1
(gc test.txt -raw -enc UTF8) -creplace '\b\p{Lu}[\p{L}\d]+\b'
хотя, в данном случае, наверное, не принципиально...
1
0 / 0 / 1
Регистрация: 20.08.2016
Сообщений: 15
20.08.2017, 17:29  [ТС] 8
Спасибо всем. Очень помогли. Правда только на одной из машин вариант не работает. На остальных не хочет зараза((
Сорри за неточность в ТС, да текст в кириллице и в UTF8 без BOM .
0
Любознательный
6546 / 1913 / 333
Регистрация: 10.03.2016
Сообщений: 4,355
20.08.2017, 19:18 9
Цитата Сообщение от Avatarik Посмотреть сообщение
Правда только на одной из машин вариант не работает. На остальных не хочет зараза((
"На одной не работает, на остальных не хочет" - то потухнет, то погаснет?
Powershell необходимо обновлять периодически.
Дайте команду в консоли:
PowerShell
1
$host.version
- если мажорная версия меньше 3, то и не будет работать.
Если обновление проблематично, то в таком случае строку следует заменить на такую:
PowerShell
1
[io.file]::readalltext('test.txt',[text.encoding]::getencoding('UTF-8')) -creplace '\b\p{Lu}[\p{L}\d]+\b'
1
20.08.2017, 19:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.08.2017, 19:18
Помогаю со студенческими работами здесь

Регулярное выражение для выделения слов, начинающихся с заглавной буквы
Составить регулярное выражение, позволяющее выделить в тексте cлова, начинающиеся с Заглавной...

Вводится предложение из пяти слов. Сделать, чтобы каждое слово начиналось с заглавной буквы
Вводится предложение из пяти слов. Сделать, чтобы каждое слово начиналось с заглавной буквы

Удаление слов содержащих латинские буквы...
Необходимо написать программу на языке C++ чересстрочного слияния двух текстовых файлов с удалением...

Удаление слов, начинающихся с гласной буквы, из строки
Есть программа #include<iostream> #include<cstring> using namespace std; void reversit(char );...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru