使用前瞻查找最后一个字符

Using lookahead to find the last character

我想匹配以 "o"、"s"、"x"、"ch" 或 "sh" 结尾的词,但由于某种原因它匹配任何含有这些字母的单词。

这是我的正则表达式:

o|s|x|ch|sh(?=$)

一些示例:

您必须对交替进行分组,否则它会被解释为:

o OR s OR x OR ch OR sh(?=$) // pseudo-code

您可以使用非捕获组将它们组合在一起:

.*(?:o|s|x|ch|sh)(?=$)

并且 .* 允许匹配完整的单词。

Regex101