我该如何让我的正则表达式只匹配一个条件?
比如,我有以下的正则表达式:
(\w+)(?=ly|es|s|y)
将表达式与单词"glasses"进行匹配,返回结果如下:
glasse
正确的匹配应该是:
glass (match should be on 'es' rather than 's' as in the match above)
表达式应该适用于各种单词,例如:
films
lovely
glasses
glass
目前,正则表达式匹配上述单词的方式如下:
film - correct
lovel - incorrect
glasse - incorrect
glas - incorrect
这些单词的正确匹配应该是:
film
love
glass
glass
我目前遇到的问题是不确定如何调整我的正则表达式以适应's'或'es',因为一个单词可能同时包含这两个,比如"glasses"。
更新
感谢迄今为止的答案。我理解词干提取的复杂性和语言知识的要求。然而,在我特定的情况下,单词是有限的(films,lovely,glasses和glass),因此我只会遇到这些单词和上述表达式中的后缀。我没有特定的应用程序。我只是好奇是否可以使用正则表达式实现。我得出结论,这是不可能的,但以下是否可能:找到匹配项或未找到匹配项,例如匹配“glasses”但不匹配“glass”,但匹配“films”。film (match) - (films)
glass (match) - (glasses)
glass (no match) - (glass)
我认为可以通过从字符串末尾准确匹配后缀的方式来实现。在上面的例子中,“es”与“glass(es)”匹配,因此条件“s”被丢弃。对于glass(无匹配项),条件“s”被丢弃,因为另一个“s”位于其前面,它不完全匹配。我必须承认我不是100%确定这一点,所以我的逻辑可能有些摇摆不定,这只是一个想法。
s
。 - nhahtdhapply
,sly
,species
,nucleus
,by
。 - nhahtdh