如何在正则表达式中检测点(.)、下划线(_)和破折号(-)

如何在正则表达式中检测点(.)、下划线(_)和破折号(-)

我需要处理涉及 IP 地址或包含 IP 主机信息的文件夹的信息。

我需要一个可以识别(匹配)IP 地址的模式,无论是实际的 url、文件夹名称还是数据文件。例如

127.0.0.10
127-0-0-10
127_0_0_10

应该全部匹配。多于。是否有任何 tokenizer 正则表达式可以在 bash 中执行此操作?

答案1

以下正则表达式似乎可以满足您的需要:

\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[\-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[\-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b

$ cat test.txt
127.0.0.10
127-0-0-10
127_0_0_10
256_5_10_1
10-10-100-1
192.168.100.1
$ grep -E '\b(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])[-._](25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])\b' test.txt
127.0.0.10
127-0-0-10
127_0_0_10
10-10-100-1
192.168.100.1

https://www.regular-expressions.info/ip.html正则表达式的解释。我只是简单地修改了\.s ,[-._]使其匹配-, ., 或_

相关内容