Python 冒号出现后需要表达式不匹配

Python 冒号出现后需要表达式不匹配,python,regex,Python,Regex,因此,我有一个名单的名字,并希望筛选出正确的格式。作为参考,我需要的格式是IP::hostname。这是我目前拥有的正则表达式: ^\d+(\.\124;\:)\ d+\.\d+\.\d+:.+\w$ 但是,我需要修改它,以便如果主机名中或之后有任何冒号(:),则它与表达式不匹配: 这与正确的匹配: 10.179.12.241::CALMGTVCSRM0210 此项匹配但不应: 10.179.12.241::CALMGTVCSRM0210:as 任何关于如何修改我的表达式以使其不匹配主机名后的

因此,我有一个名单的名字,并希望筛选出正确的格式。作为参考,我需要的格式是IP::hostname。这是我目前拥有的正则表达式:

^\d+(\.\124;\:)\ d+\.\d+\.\d+:.+\w$

但是,我需要修改它,以便如果主机名中或之后有任何冒号(:),则它与表达式不匹配:

这与正确的匹配:

10.179.12.241::CALMGTVCSRM0210

此项匹配但不应:

10.179.12.241::CALMGTVCSRM0210:as

任何关于如何修改我的表达式以使其不匹配主机名后的任何冒号的帮助都将不胜感激。

+
模式尽可能多地匹配除换行符以外的一个或多个字符,从而匹配允许它们的冒号。您需要一个,
[^::::]*
,它将匹配除冒号以外的0+字符

您可以使用

为了确保您想要匹配您希望使用的有效IP

^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}::[^:]*\w$

见()。
(?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)
匹配一个从
0
255
的八位字节,
(?:\){3}
匹配一个点和一个八位字节模式的三次重复。

+
替换为
[^*:
,请参阅。@wiktorstriwow这很容易。谢谢我用于正则表达式测试的站点。这对调试我需要的东西非常有帮助,因为它分解了我所有表达式所表示的内容。为什么要使用
(\。\124;\:)
?第一个数字后面会有一个冒号吗?@WiktorStribiżew一些条目有a:而不是a。因此,我必须对这两种情况作出解释
^(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}::[^:]*\w$