我正在尝试为TACACS设置XML配置文件。我不是REGEX的最佳人选。
基本上,您可以指定一组客户端。如果要将整个子网包括在内,它们可以轻松实现:
int power(int x, unsigned int y)
{
int temp;
if( y ==1)
return x;
if (y%2 == 0){
temp = power(x, y/2);
return temp*temp;
}
else{
temp = power(x, (y-1)/2);
return x*temp*temp;
}
}
我遇到的问题是我想为不同的客户端(防火墙)做不同的事情。例如,我想说明子网192.168.100中的所有客户端。*除了192.168.100.127之外。
我立即注意到了一些问题。
192.168.100。[1-9] [0-9]应涵盖192.168.100.10-99,但也会在最后一个八位字节中抓取三位数的IP。和192.168.100.101一样,因为它与101中的10匹配.192.168.100也是同样的问题。[1-9]因为它抓住了第一个数字。
如何强制它只抓一个或两个数字?
至于我尝试的排除:192.168.100.1 [0-9] [^ 7]它设法不抓住192.168.100.127但是当它应该只检查100-199时也抓住了192.168.100.11。
任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
使用正则表达式进行ip:
^(([01]?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))\.){3}([01]?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))$
并在ip的最后一部分之前添加否定前瞻:
^(([01]?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))\.){3}(?!127)([01]?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))$
// here __^^^^^^^
具体地址:
^192.168.100.(?!127)([01]?[0-9]?[0-9]|2([0-4][0-9]|5[0-5]))$
除192.168.100.0
192.168.100.255
到192.168.100.127
的所有范围
答案 1 :(得分:0)
this会为你效力吗? ((?:2[0-5][0-5]|1\d\d|\d{1,2})\.(?:2[0-5][0-5]|1\d\d|\d{1,2})\.(?:2[0-5][0-5]|1\d\d|\d{1,2})\.(?:2[0-5][0-5]|1[^2][^7]|\d{1,2}))$
答案 2 :(得分:0)
在IP的末尾添加单词边界\b
,例如:
192.168.100.[1-9][0-9]\b
字边界不消耗任何输入,断言不是另一个数字。
对于"而不是127"例如,使用此:
192.168.100.1[0-9][^7<]
因为[^7]
也会匹配以下左括号。