Из предложенных вариантов подходит пятый: \w+(\s\w+)*. При проверке всей строки используйте re.fullmatch; значения «слово» и «пробел» здесь шире букв и обычного пробела.
Какое регулярное выражение полностью соответствует предложению, которое состоит из разделённых пробелами слов и заканчивается точкой?
Из предложенных вариантов подходит пятый: \w+(\s\w+)*\. При проверке всей строки используйте re.fullmatch; значения «слово» и «пробел» здесь шире букв и обычного пробела.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Какое регулярное выражение полностью соответствует предложению, которое состоит из разделённых пробелами слов и заканчивается точкой?
'(\s\w+)*.'
'[A-z]+(\s[A-z]+)*.'
'{w}+(\s{w}+)*.'
'\W+(\s\w+)+.'
'\w+(\s\w+)*.'
Ответ
Из предложенных вариантов подходит пятый: \w+(\s\w+)*. При проверке всей строки используйте re.fullmatch; значения «слово» и «пробел» здесь шире букв и обычного пробела.
import re
pattern = r'\w+(\s\w+)*\.'
valid = re.fullmatch(pattern, 'Hello world.') is not None
Первое \w+ требует слово, группа разрешает дополнительные слова с разделителем, а \. обозначает буквальную точку. fullmatch исключает лишний текст в начале и конце. В Python \w включает также цифры и подчёркивание, а \s — не только обычный пробел. Если нужны исключительно буквы и одиночные пробелы, шаблон следует уточнить. Диапазон [A-z] некорректен как обозначение только латинских букв: между Z и a есть знаки.