Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 记事本++;正则表达式:匹配对应于x.x.x.x/24的IP地址范围_Regex - Fatal编程技术网

Regex 记事本++;正则表达式:匹配对应于x.x.x.x/24的IP地址范围

Regex 记事本++;正则表达式:匹配对应于x.x.x.x/24的IP地址范围,regex,Regex,我有一个庞大的IP范围列表,其中每个范围都用连字符分割并放在新行上,我只需要将IP保持在相同的3级范围内:50.197。62.0-50.197。62.255,但不是50.197.62.0-50.197.73.125等。 到目前为止,我还不知道该怎么做。 我真的很感激这里的任何帮助。谢谢 其他例子 希望保留: 4.49.119.0-4.49.119.255 12.161.203.64-12.161.203.79 23.25.83.201-23.25.83.201 24.23.113.0-24.23

我有一个庞大的IP范围列表,其中每个范围都用连字符分割并放在新行上,我只需要将IP保持在相同的3级范围内:50.197。62.0-50.197。62.255,但不是50.197.62.0-50.197.73.125等。 到目前为止,我还不知道该怎么做。 我真的很感激这里的任何帮助。谢谢

其他例子

希望保留:
4.49.119.0-4.49.119.255
12.161.203.64-12.161.203.79
23.25.83.201-23.25.83.201
24.23.113.0-24.23.113.255
38.101.137.0-38.101.137.255
38.107.144.0-38.107.144.255
38.107.146.0-38.107.146.255
50.73.187.0-50.73.187.216

希望与正则表达式匹配,以便删除它们:
64.58.246.0-64.58.247.255
66.212.138.0-66.212.140.255
67.172.21.0-67.172.23.255
67.186.41.128-67.186.50.115
68.235.192.0-68.235.223.255
70.89.104.0-70.89.105.87
71.16.71.96-71.16.72.103
71.60.156.12-71.60.162.255
71.162.15.128-71.162.12.98

72.22.23.0-72.22.24.127

如果您的意思是希望匹配以“50.197.62”开头的任何IP地址,您可以执行以下操作:

/50\.197\.62\.\d{1,3}/
通常在IP地址中指定范围是这样做的:50.197.62.0/24

它被称为CIDR表示法,您可以在这里阅读更多关于它的内容:

编辑:

在理解了您希望匹配整个字符串“ipip”之后,它变得更加清晰了

/(\d{1,3}\.\d{1,3}\.\d{1,3}\.)\d{1,3}-\1\d{1,3}/g
演示:

编辑2:

反向:

/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.)\d{1,3}-(?!\1)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/gm
这需要多行的标志
m
,以强制搜索从行的开头开始。另一方面我也应该用这个


演示:

您可以使用BAT命令而不是RegEx来管理它

for /F "tokens=1-8 delims=.-" %a in (iplist.txt) do @if %c EQU %g echo %a.%b.%c.%d-%e.%f.%g.%h>> newiplist.txt
或者,如果希望前3个块相等:

for /F "tokens=1-8 delims=.-" %a in (iplist.txt) do @if "%a.%b.%c" EQU "%e.%f.%g" echo %a.%b.%c.%d-%e.%f.%g.%h>> newiplist.txt
假设iplist.txt是所有IPs列表,newiplist.txt是新IPs列表


我想指出的是,如果直接从shell运行,则应使用单%;如果创建批处理文件,则应使用双%(%a、%%b等)。

恐怕我不明白您在这里的意思。看起来您希望匹配50.197.63.0/24,但不希望匹配其他范围,然后排除该子网?你能澄清一下吗?发布一些您希望匹配的IP示例,有些您不想匹配。谢谢,但我有IP数据库,具体方式与我在问题中编写的方式相同,即使用连字符拆分。我不需要以另一种方式重新编写它们,我只想编写一个正则表达式,使前三个数字的IP范围保持相等。我用更多的例子更新了我的问题。非常感谢,但是你能提供相反的表达方式吗?因为,恰恰相反,我需要匹配那些具有不同子网的范围,这样我就可以用nothing.Done替换它们。不过,这根本不是你要的。谢谢。我说过,我希望保留具有相同子网的范围,并删除具有不同子网的范围。我觉得我说得很清楚。如果我没有,那很抱歉。这只是一个观点问题。如果你有一个过滤器或验证,你需要第一个,但是如果你想用空的替换错误的,那么你需要第二个。我理解它是如何出错的,但你应该更清楚地知道你在提问时到底想做什么。