正则表达式:仅当整数正确时才匹配 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_str1 和 my_str3(但不是全部)。
如 my_str2 我不想要 my_str3 的匹配项。我必须在正则表达式中更改什么?
谢谢。
您还需要使用字符串结尾锚点 $
,它将强制从开头 (^
) 到字符串结尾进行匹配。
^\d+\.?\d+\.?\d+$
^
见demo
如果您需要允许可选的 .
+ digits
序列,请使用带有分组和 limiting quantifier:
的此版本
^\d+(?:\.?\d+){0,2}$
^ ^^^^^^
您可以根据需要调整 min/max 值。
^(?!.*\.\.)[\d.]+$
您还可以使用 lookahead
来否定匹配 ..
occur.See demo.
在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_str1 和 my_str3(但不是全部)。
如 my_str2 我不想要 my_str3 的匹配项。我必须在正则表达式中更改什么?
谢谢。
您还需要使用字符串结尾锚点 $
,它将强制从开头 (^
) 到字符串结尾进行匹配。
^\d+\.?\d+\.?\d+$
^
见demo
如果您需要允许可选的 .
+ digits
序列,请使用带有分组和 limiting quantifier:
^\d+(?:\.?\d+){0,2}$
^ ^^^^^^
您可以根据需要调整 min/max 值。
^(?!.*\.\.)[\d.]+$
您还可以使用 lookahead
来否定匹配 ..
occur.See demo.