gpt4 book ai didi

regex - perl 一行+正则表达式匹配部分单词

转载 作者:太空宇宙 更新时间:2023-11-04 11:23:23 25 4
gpt4 key购买 nike

我写了一段Perl代码,按照下面的规则匹配IP地址:

仅匹配前三个八位位组,而四个八位位组必须是有效的 0-255 ,除该数字外或“.”不能在第一个八位位组之前存在和数字或“”也不能存在于四个八位字节之后

例子

 export IP=100.187.34

应该匹配的 IP 示例

:100.187.34.12:.10
IP=100.187.34.100$
AAA100.187.34.199BBB
address:100.187.34.210+

不应匹配的 IP 示例

 55.100.187.34.99
.100.187.34..
100.187.34.100.1
100.187.34.2100
1.100.187.34
100.187.34.1.1

所以这是我的代码(不符合我的规则):

      echo [...]xxx.xxx.xxx.xxx[...]   |    perl  -pe 'print if  /(?<![\d.])\Q$ENV{IP}\E(?=\.(?:1?\d?\d|2[0-4][0-9]|25[0-5])(?!\d))/; '  

问题是我的代码几乎匹配任何数字

请建议我需要在我的代码中修复什么以便仅根据规则匹配 IP

最佳答案

以下是 O'Reilly 的正则表达式手册中 IP 正则表达式匹配的一些示例:

检查 IP 地址的简单正则表达式:

^(?:[0-9]{1,3}\.){3}[0-9]{1,3}$

用于检查 IP 地址的准确正则表达式:

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

从较长文本中提取 IP 地址的简单正则表达式:

\b(?:[0-9]{1,3}\.){3}[0-9]{1,3}\b

从较长文本中提取 IP 地址的准确正则表达式:

\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}↵
(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

捕获 IP 地址的四个部分的简单正则表达式:

^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$

捕获 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]?)\.↵
(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]?)$

关于regex - perl 一行+正则表达式匹配部分单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16458180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com