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

时间:2017-08-10 00:59:49

标签: ruby regex string oniguruma

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

  • This is a string.

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

  • This is a string...

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

/[\.]{1}\z/

但我不希望它匹配以...结尾的字符串。

3 个答案:

答案 0 :(得分:4)

你想要的是一个'负面的背后'断言:

(?<!\.)\.\z

这会查找字符串末尾的句点,该句点不以句号开头。其他答案与以下字符串不匹配:"."

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

答案 1 :(得分:2)

您可以使用:

[^\.][\.]\z

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

答案 2 :(得分:0)

我非常喜欢 Regexr

类似于Dekel的解决方案:

[^.]+[.]

Live demo