【发布时间】:2015-03-29 12:47:14
【问题描述】:
一些人类语言的特点是达到形态和发达的语法性别系统。例如,在斯拉夫语言中,几乎每个单一语法数字的形容词都有三种不同的形式,根据性别的数量(阳性、阴性和中性):
white <-> белый (m), белая (f), белое (n)
在某些情况下,在使用正则表达式进行子字符串替换时获取可能的单词形式列表会很有用。
现在我很好奇,如果 Python(或任何其他脚本语言)允许执行以下操作(警告:下面的代码 sn-ps 是类似于 Python 的 伪代码,但不是可用的 Python 代码):
# I would like to handle russian genders like that:
>>> re.sub(r"Бел.", r"Бел[ый|ая|ое]", "Бел. Берель")
["Белый Берель", "Белая Берель", "Белое Берель"]
# A very artifical example for those who prefer latin:
>>> re.sub(r"Go.", r"Go[ld|lden]", "Go. Ochre")
["Gold Ochre", "Golden Ochre"]
那么我可以使用正则表达式来获取匹配的单词组合列表吗?
【问题讨论】:
-
您的示例中的工作 Python 代码还是所需的代码?
-
你可以使用循环遍历每个性别,不是吗?
-
如果您使用
[a-zA-Z0-9],而不是西里尔字母,那么了解您想要匹配的内容和想要替换的内容会容易得多。即使这根本没有意义 - 真的很难“阅读”它并看到差异。 -
@AlexeyGorozhanov,这是一个想要的代码
-
@Jerry,我当然可以,但我希望它已经实现并且开箱即用......
标签: python regex linguistics