在Perl TCL中寻找最短的ipv4匹配regexp

时间:2016-07-22 13:08:14

标签: regex perl

我试图在perl

中获得IPV4的最短正则表达式

假设我们有以下

my $ip = "192.168.1.23";
$ip =~ /(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})/;
$ip =~ /(\d{1,3})(\.\d{1,3}){3}/;

或者我们可以用点

分割

我们有没有办法在表达式中只使用\d{1,3}一次?就像我们的第一个ip匹配表达式一样,我使用\d{1,3}四次,第二个表达式使用它两次。

1 个答案:

答案 0 :(得分:2)

您当前的模式匹配许多非IPV4地址的字符串,因此我无法确定您的条件是什么。您也可以.* as melpomene says

稍微好一点的是/[\d.]{7,15}//(?:\d{1,3}:){3}\d{1,3}/,但最好的方法是use Regexp::Common $RE{net}{IPv4}会给你正确的模式

(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.](?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}))