是否可以使用正则表达式匹配所有单词但只匹配一次唯一单词?我知道有其他方法可以做到这一点,但我有兴趣知道这是否可以使用正则表达式.
例如,我目前有以下表达式:
(\w+\b)(?!.*\1)
Run Code Online (Sandbox Code Playgroud)
和以下字符串:
glass shoes door window door glasses. window glasses
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,表达式起作用并匹配以下单词:
shoes
door
window
glasses
Run Code Online (Sandbox Code Playgroud)
这有两个问题:
正在使用"glass"在"眼镜"上进行子串的匹配,这是不正确的.
"眼镜"和"眼镜".应该匹配,但目前不匹配.
最后的比赛应该是:
shoes
door
window
glasses
glass
Run Code Online (Sandbox Code Playgroud) 如何让我的正则表达式完全匹配一个条件?
例如,我有以下正则表达式:
(\w+)(?=ly|es|s|y)
Run Code Online (Sandbox Code Playgroud)
将表达式与"眼镜"这个词匹配会返回:
glasse
Run Code Online (Sandbox Code Playgroud)
正确的匹配应该是:
glass (match should be on 'es' rather than 's' as in the match above)
Run Code Online (Sandbox Code Playgroud)
表达式应该适用于任何类型的单词,例如:
films
lovely
glasses
glass
Run Code Online (Sandbox Code Playgroud)
目前正则表达式与上述单词匹配为:
film - correct
lovel - incorrect
glasse - incorrect
glas - incorrect
Run Code Online (Sandbox Code Playgroud)
这些单词的正确匹配应为:
film
love
glass
glass
Run Code Online (Sandbox Code Playgroud)
我现在遇到的问题是我不确定如何调整我的正则表达式以正确地满足's'或'es',因为一个单词可以包含诸如"眼镜"之类的两个单词.
谢谢你到目前为止的答案.我很欣赏词干的复杂性和语言知识的要求.然而,在我的特定情况下,单词是有限的(电影,可爱,眼镜和玻璃),因此我只会在上面的表达式中遇到这些单词和后缀.我没有特定的申请.我只是想知道是否可以使用正则表达式.我得出的结论是,这是不可能的,但是以下是可能的:
找到或找不到匹配项,例如匹配眼镜但不是玻璃,但DO匹配电影:
film (match) - (films)
glass (match) - (glasses)
glass (no match) - (glass)
Run Code Online (Sandbox Code Playgroud)
我在想的是,是否有一种方法可以将后缀与末尾的字符串完全匹配.在上面的例子中,'es'匹配glass,因此条件's'被丢弃.在玻璃的情况下(不匹配)条件's'被丢弃,因为另一个's'在它之前,它不完全匹配.我必须承认我不是百分之百关于这一点所以我的逻辑可能看起来有点不对劲,这只是一个想法.