我正尝试使用正则表达式删除所有后缀至少为4个字符的所有单词后缀-es
,-s
,-e
或-x
在Python中。
有一些所需输出的示例,(法文):
我尝试实现如下所示的方法,但是我发现它不是很有效。
def _stem_reg(word):
pattern = "(\w{4,})(es$)|(\w{4,})(s$)|(\w{4,})(e$)|(\w{4,})(x$)"
found = re.match(pattern, word)
if found is not None:
return next(group for group in found.groups() if group is not None)
else:
return word
答案 0 :(得分:-1)
word = "feuilletées"
output = re.sub(r"^(\w{4,}?)(?:es|s|e|x)$", r'\1', word)
(\w{4,}?)
捕获组1将匹配4个或更多字母。(?:es|s|e|x)
非捕获组将匹配范围内的所有后缀(-es,-s,-e,-x)答案 1 :(得分:-2)
假设
txt = "your input string"
您可以使用:
re.sub(r"\b([^\W\d_]{4,})(?:(?<=...[^e])s|(?<=^...e)s|es|e|x)\b", r'\1', txt, flags = re.U)
测试此正则表达式模式here。