正则表达式:仅当整数正确时才匹配 python 中的层级编号

regex: Only match a hierarchical number in python when the whole number is correct

在python 2.7中,我只想在整数正确时匹配一个分层数字。

my_str1 = "10.2.15"
my_str2 = "10..2.15"
my_str3 = "10.2..15"

我的正则表达式是:

pattern = re.compile(r"^\d+\.?\d+\.?\d+")

这匹配 my_str1my_str3(但不是全部)。

my_str2 我不想要 my_str3 的匹配项。我必须在正则表达式中更改什么?

谢谢。

您还需要使用字符串结尾锚点 $,它将强制从开头 (^) 到字符串结尾进行匹配。

^\d+\.?\d+\.?\d+$
                ^

demo

如果您需要允许可选的 . + digits 序列,请使用带有分组和 limiting quantifier:

的此版本
^\d+(?:\.?\d+){0,2}$
     ^       ^^^^^^

您可以根据需要调整 min/max 值。

another demo

^(?!.*\.\.)[\d.]+$

您还可以使用 lookahead 来否定匹配 .. occur.See demo.

https://regex101.com/r/vV1wW6/29