1

我需要在一个列表中包含所有 6 个字母的拉丁词。

我还想在列表中包含遵循 Xyzzyx 模式的单词。

我用过小 Python。

4

2 回答 2

5

正则表达式是你的朋友,我的朋友!这是作业吗?

这是一个接近您想要的示例:

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

我将把它作为练习留给读者创建一个拉丁单词列表并处理第二个正则表达式中的大写 X,但总体思路应该很明显。

于 2009-02-22T14:10:50.557 回答
0

请注意,除非您的列表包含所有名词的变格和动词的变位,否则您的程序将不会产生像拉丁语中的所有六字母单词一样的任何内容。

例如,您的列表可能只包含名词的主格。主格长度为五个字母的第一变格名词(例如mensa)具有六个字母的属格(例如mensae)。所有的变格都包含名词长度与其主格不同的情况。

动词的情况更是如此,每个动词都有(至少)四个主要部分,可以有不同的长度,并且它们的变位也可以有不同的长度。所以乐高的第一人称单数现在时是四个字母,但它的不定式legere是六个;porto在第一人称单数中是五个,但在第二人称单数中是六个,portas

我认为原则上可以构建一个引擎,在给定关于每个单词的足够元信息的情况下,以编程方式拒绝和结合拉丁词。Python 实际上是一种非常好的语言来做到这一点。但这比编写正则表达式要大得多。

于 2009-02-22T20:20:48.547 回答