【发布时间】:2012-12-13 10:00:12
【问题描述】:
如何让我的正则表达式与一个条件完全匹配?
例如我有以下正则表达式:
(\w+)(?=ly|es|s|y)
将表达式与“眼镜”一词匹配返回:
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”,因为一个词可能同时包含“眼镜”等。
更新
感谢您到目前为止的回答。我很欣赏词干提取的复杂性和语言知识的要求。但是在我的特殊情况下,这些词是有限的(电影、可爱、眼镜和玻璃),因此我只会遇到这些词和上面表达式中的后缀。我没有专门的应用程序。我只是想看看是否可以使用正则表达式。我得出的结论是这是不可能的,但是以下情况是否可能:
找到或未找到匹配项,例如匹配眼镜但不匹配玻璃但 DO 匹配电影:
film (match) - (films)
glass (match) - (glasses)
glass (no match) - (glass)
我在想的是,是否有办法将后缀与字符串完全匹配。在上面的示例中,“es”匹配玻璃,因此条件“s”被丢弃。在玻璃(不匹配)的情况下,条件 's' 被丢弃,因为另一个 's' 在它之前,它不完全匹配。我必须承认我不是 100% 了解这一点,所以我的逻辑可能看起来有点不稳定,这只是一个想法。
【问题讨论】:
-
不,这不是正则表达式的工作——尤其是删除
s。 -
一些例子表明语言知识是必要的:
apply,sly,species,nucleus,by。