正则表达式检测字符串末尾的句点,但不检测“...”

Regex to detect period at end of string, but not '...'

使用正则表达式,我如何匹配恰好以一个 . 结尾的字符串:

但不是那些以多个 . 结尾的:

我有一个正则表达式可以检测单个 .:

/[\.]{1}\z/

但我不希望它匹配以 ....

结尾的字符串

您可以使用:

[^\.][\.]\z

您正在查找在最后一个点之前有一个不是点的字符的字符串。

我非常喜欢 Regexr

类似于Dekel的解决方案:

[^.]+[.]

Live demo

你想要的是一个'negative lookbehind'断言:

(?<!\.)\.\z

这会在字符串末尾查找一个句点 ,它前面没有句点 。其他答案不会匹配以下字符串:"."

此外,您可能需要注意 unicode 省略号字符…… 您可以这样检测:str =~ /\u{2026}/