2

我有一个单词列表,我想匹配这些单词的任何组合。假设我有单词appleorange并且mango我正在使用以下字符串:

This place has the best apple pie. They also have orange, apple and mango-apple smoothie ... 

我到目前为止的正则表达式是\b((apple|orange|mango)[\s-(,\s)]*)+

它匹配正确的单词组合,但还匹配序列末尾的额外空格。我得到的比赛:

"apple "
"orange, apple "
"mango-apple "

我知道为什么会这样。如何更改正则表达式以摆脱最后的最后一个空格?

4

1 回答 1

3

最后添加 a\b似乎对我有用。此外,-放在方括号中时应该放在最后。因此,您需要做的就是将您的正则表达式更改为:\b((apple|orange|mango)[\s(,\s)-]*)+\b

编辑:

根据您的评论,我已经尝试过:\b((apple|orange|mango)([\s,-]+(apple|orange|mango))*)+\b。您当前的正则表达式的问题在于,您还在末尾添加了空格,以便您可以匹配apple mango例如。

我建议的正则表达式应该匹配空格、破折号或逗号当且仅当它们后跟单词apple,orangemango.

于 2013-02-18T06:02:50.797 回答