Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/40: Рейтинг темы: голосов - 40, средняя оценка - 4.88
99 / 86 / 20
Регистрация: 10.09.2019
Сообщений: 708

Задачи на регулярные выражения - поиск количества слов

18.06.2021, 15:59. Показов 8371. Ответов 26

Студворк — интернет-сервис помощи студентам
Слово — это последовательность из букв (русских или английских), внутри которой могут быть дефисы.
На вход даётся текст, посчитайте, сколько в нём слов.
PS. Задача решается в одну строчку.

Ввод
Он --- серо-буро-малиновая редиска!!
>>>:->
А не кот.
www.kot.ru

Вывод
9
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.06.2021, 15:59
Ответы с готовыми решениями:

Регулярные выражения (поиск слов)
Необходимо осуществить поиск слов, которые разделены запятыми или пробелами.(Слова должны содержать только латинские символы , если слово...

Регулярные выражения: поиск слов заданной длины
Добрый день! Ищу слова по заданной длине с помощью регулярных выражений, но столкнулся с проблемой, что не могу корректно вывести самое...

Регулярные выражения, поиск нескольких слов в строке
Добрый день! Общая суть проблемы: Есть текстовый файл, куда сыпятся логи. Построчно выводим содержимое на консоль. Каждая строка в...

26
3584 / 2184 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
18.06.2021, 18:57
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от iSmokeJC Посмотреть сообщение
кто регулярки ниасилил.
И те, кто познал дзен))


1
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.06.2021, 20:05
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import regex as re
# библиотеку regex привлек по случаю неподдерживания стандартной re свойств юникода
# можно обойти с помощью lookahead, но регулярка люто разрастется
 
s = '''Он --- серо-буро-малиновая редиска!!
>>>:->
--А не кот.
-например?
бракованое444слово
www.kot.ru'''
 
# слова, содержащие в себе все, кроме букв и дефисов - за слова не считаются (бракованные))))
# слово может начинаться и заканчиваться на любой символ  ( -например? )
# тем не менее, выводится будет именно слово, без примесей
# т.е.  -например?  -->  например
print(
    # len
    (re.findall(r'(?<=\W|^)\p{L}*(?:\p{L}+-)*\p{L}+(?=\W|$)', s)))
# ['Он', 'серо-буро-малиновая', 'редиска', 'А', 'не', 'кот', 'например', 'www', 'kot', 'ru']
Добавлено через 6 минут
Update
r'(?<=\W|^)(?:\p{L}+-)*\p{L}+(?=\W|$)'
1
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,320
18.06.2021, 20:12
Если именно количество слов, то можно так
Python
1
result = re.sub(r'[^\w\s]',' ', text.replace('-','')).split()
2
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
18.06.2021, 20:18
Gdez, "бракованные" слова пропустит. Но ТСу и этого решения за глаза
0
Эксперт Python
5439 / 3860 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
18.06.2021, 23:29
Лучший ответ Сообщение было отмечено AlexMarkov как решение

Решение

Python
1
2
3
4
5
>>> re.findall("\w[\w-]*\w*", text)
['Он', 'серо-буро-малиновая', 'редиска', 'А', 'не', 'кот', 'www', 'kot', 'ru']
>>> len(re.findall("\w[\w-]*\w*", text))
9
>>>
Надеюсь, ничей вариант не повторил :-)
И понятия не имею как это будет работать на прочих вариантах. Но составные слова, внутри которых содержится любое число дефисов будет считать за одно согласно условию.

Добавлено через 30 минут
Вот еще вариант (не будет матчить дефис в конце, но требует исключения пустых строк)
Python
1
2
3
4
5
6
7
8
9
>>> text = '''Он --- серо-буро-малин-овая ред-иска!!
>>>:->
-А- не -кот.
www.kot.ru'''
>>> re.findall(r"\b[\w-]*\b", text)
['Он', '', 'серо-буро-малин-овая', '', 'ред-иска', '', 'А', '', 'не', '', 'кот', '', 'www', '', 'kot', '', 'ru', '']
>>> len([w for w in re.findall(r"\b[\w-]*\b", text) if w])
9
>>>
Добавлено через 1 минуту
А вот, кажется, идеальный вариант:
Python
1
2
3
4
5
6
7
8
9
text = '''Он --- серо-буро-малиновая редиска!!
>>>:->
--А не кот.
-например?
бракованое444слово
www.kot.ru'''
>>> re.findall(r"\b\w[\w-]*\b", text)
['Он', 'серо-буро-малин-овая', 'ред-иска', 'А', 'не', 'кот', 'www', 'kot', 'ru']
>>>
Добавлено через 7 минут
Если кто-то не согласен, что матчатся и слова с циферками (так работает \w) заменяем \w на алфавиты (анг. и русский, букву ё добавить по вкусу)
Python
1
2
3
>>> re.findall(r"(?i)\b[a-zа-я][a-zа-я-]*\b", text)
['Он', 'серо-буро-малиновая', 'редиска', 'А', 'не', 'кот', 'например', 'www', 'kot', 'ru']
>>>
1
0 / 0 / 0
Регистрация: 07.07.2022
Сообщений: 1
07.07.2022, 08:31
\b\w+\b|[А-я]+

Добавлено через 25 секунд
\b\w+\b|[А-я]+
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
07.07.2022, 08:36
kreva, садись, два
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.07.2022, 08:36

Коды количества. Регулярные выражения
подскажите пожалуйста, готовлюсь к сессии, в билете есть вопрос &quot;Базовый C#. Регулярные выражения. Коды количества.&quot; что такое коды...

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

Задачи на регулярные выражения
В России применяются регистрационные знаки нескольких видов. Общего в них то, что они состоят из цифр и букв. Причём используются только...

Задачи на регулярные выражения
Только начал своё обучение первого ЯП,поэтому сталкиваюсь с трудностями незнания регулярных выражений,к тому же не так хорошо знаю...

Задачи на регулярные выражения
Помогите хоть что-нибудь, очень нужно!!) 2) Составить регулярное выражение, определяющее является ли заданная строка IP адресом,...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru