Regex 正则表达式来匹配配置文件中未注释的行,并且只从字符串中捕获IP地址

Regex 正则表达式来匹配配置文件中未注释的行,并且只从字符串中捕获IP地址,regex,perl,Regex,Perl,这是我试图解析的文件的内容 # nameserver 3.3.3.3 nameserver 1.1.1.1 nameserver 2.2.2.2 到目前为止,我有以下几点: ^[^#].*\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 可以忽略注释行,但它与nameserver 1.1.1.1和nameserver 2.2.2.2匹配 理想情况下,我希望

这是我试图解析的文件的内容

# nameserver 3.3.3.3
nameserver 1.1.1.1
nameserver 2.2.2.2
到目前为止,我有以下几点:

^[^#].*\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
可以忽略注释行,但它与nameserver 1.1.1.1和nameserver 2.2.2.2匹配

理想情况下,我希望只匹配未注释掉的行,并且只匹配IP地址,因为字符串的名称服务器部分对我来说并不重要

我在StackOverflow上找到了一些正则表达式,它们可以完成其中一个,但不能同时完成两个

任何关于我做错了什么的暗示都会很棒


谢谢大家

使用捕获组
(…)
捕获整个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

您还可以查看已为您提供此功能的。Drew您将在变量
$1
中找到您的IP。谢谢您,这太完美了。我知道我错过了一些简单的东西。