因此,我有一个名单的名字,并希望过滤出以适当的格式。作为参考,我需要的格式是IP::hostname。这是我目前使用的regex公式:
^\d+(\.|\:)\d+\.\d+\.\d+::.+\w$
但是,我需要修改它,以便如果主机名或主机名后面有任何冒号(:),则使其与表达式不匹配:
这与正确的匹配:
10.179.12.241::CALMGTVCSRM0210
这是匹配的,但不应该:
10.179.12.241::CALMGTVCSRM0210:as对于如何在主机名后修改我的表达式以不匹配任何冒号的任何帮助将不胜感激。
发布于 2019-02-06 16:44:23
.+模式匹配除行中断字符以外的一个或多个字符,尽可能多,因此匹配允许它们的冒号。您需要一个否定字符类,[^:]*,它将与冒号以外的0+字符匹配。
您可以使用以下方法修复regex (并增强一点)
^\d+[.:]\d+\.\d+\.\d+::[^:]*\w$
^^^^^为了确保您想要匹配您希望使用的有效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$见另一个regex演示 (IP正则源)。(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)匹配从0到255的单个八进制,(?:\.<octet_pattern>){3}匹配三个重复的点和一个八进制模式。
https://stackoverflow.com/questions/54558423
复制相似问题