1

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

  • This is a string.

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

  • This is a string...

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

/[\.]{1}\z/

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

4

3 回答 3

6

你想要的是一个“消极的后视”断言:

(?<!\.)\.\z

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

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

于 2017-08-10T01:44:36.973 回答
2

您可以使用:

[^\.][\.]\z

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

于 2017-08-10T01:01:24.927 回答
0

我非常喜欢正则表达式

类似于 Dekel 的解决方案:

[^.]+[.]

现场演示

于 2017-08-10T01:11:20.997 回答