Как вы можете извлечь все 6 букв латинского слова в список? - PullRequest
1 голос
/ 22 февраля 2009

Мне нужно иметь все 6 букв латинских слов в списке.

Мне также хотелось бы, чтобы в списке были слова, которые следуют шаблону Xyzzyx.

Я использовал маленький Питон.

Ответы [ 2 ]

5 голосов
/ 22 февраля 2009

Регулярные выражения - твой друг, мой друг! Это домашнее задание?

Вот пример, который близок к тому, что вы хотите:

egrep "^\w{6}$" /usr/share/dict/words | egrep "(.)(.)(.)\3\2\1"

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

0 голосов
/ 22 февраля 2009

Обратите внимание, что если ваш список не содержит все склонения существительных и спряжения глаголов, ваша программа не выдаст ничего подобного all шестибуквенным словам на латыни.

Например, ваш список, вероятно, содержит только именительный падеж имен существительных. Существительные первого склонения, у которых именительный падеж состоит из пяти букв (например, mensa ), имеют родительный падеж из шести букв (например, mensae ). Все склонения содержат случаи, когда длина существительного отличается от именительного падежа.

То же самое относится и к глаголам, каждый из которых имеет (как минимум) четыре основные части, которые могут иметь различную длину, и чьи спряжения могут быть также различной длины. Таким образом, настоящее время от первого лица в единственном числе lego имеет длину четыре буквы, а его инфинитив legere составляет шесть; porto - это пять в единственном числе от первого лица, но шесть в единственном числе от второго лица, portas .

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

...