正则表达式使用现有数据从 ipconfig 中提取数据

标签 regex parsing regex-lookarounds

我有以下正则表达式可以提取运行良好的键值对。我已经通过另一个系统从多台机器接收了这些数据,我更愿意使用我已经拥有的数据而不是使用 WMI 再次获取数据。

(^.*?)[^\w]+\:\s(.*?$|\n\r)$

问题 - 1 - 我还希望能够使用单独的正则表达式提取适配器名称。你能帮忙吗

问题 - 2 - 我拥有的正则表达式没有选择值列表。例如DNS 后缀搜索列表或 DNS 服务器列表。

我的源数据如下。任何帮助表示赞赏
Windows IP Configuration

   Host Name . . . . . . . . . . . . : abcmyhost
   Primary Dns Suffix  . . . . . . . : parker.industries
   Node Type . . . . . . . . . . . . : Hybrid-GLS
   IP Routing Enabled. . . . . . . . : YES
   WINS Proxy Enabled. . . . . . . . : YES
   DNS Suffix Search List. . . . . . : parker1.industries
                                       parker2.industries
                                       parker3.industries
                                       parker4.industries
                                       parker5.industries
                                       parker6.industries
                                       parker7.industries
                                       parker8.industries
                                       parker9.industries
                                       parker10.industries

Ethernet adapter Ethernet 5:

   Connection-specific DNS Suffix  . : parker.industries
   Description . . . . . . . . . . . : Ready 2
   Physical Address. . . . . . . . . : 60-11-11-31-09-XY
   DHCP Enabled. . . . . . . . . . . : NO
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : AB80::11FG:1KI:LK9F:12N2%19(Preferred) 
   IPv4 Address. . . . . . . . . . . : 111.222.333.444(Preferred) 
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Monday, November 11, 2019 6:23:03 AM
   Lease Expires . . . . . . . . . . : Wednesday, November 13, 2019 6:51:30 AM
   Default Gateway . . . . . . . . . : 111.11.131.1
   DHCP Server . . . . . . . . . . . : 111.22.144.199
   DHCPv6 IAID . . . . . . . . . . . : 87244642462
   DHCPv6 Client DUID. . . . . . . . : 00-01-02-03-04-05-06-07-08-09-10-11-E9-G7
   DNS Servers . . . . . . . . . . . : 111.22.111.254 
                                       111.22.112.254
                                       111.33.113.254
                                       111.33.114.254
   NetBIOS over Tcpip. . . . . . . . : Enabled

最佳答案

如果您可以使用 \G anchor 获取重复匹配以获取例如 DNS Suffix Search List 的列表,你可能会使用:

(?:(^[^:\r\n]+):?[\r\n]+|\G(?!^))\r?\n[^:\r\n]+ : ([^\r\n]+(?:\r?\n(?!.* : )[ \t]+[^\r\n]+)*)

在零件中
  • (?:非捕获组
  • (捕获 第 1 组
  • ^[^:\r\n]+匹配除 : 之外的任何字符 1+ 次或从字符串开头的换行符
  • )关闭群 1
  • :?[\r\n]+匹配可选:并匹配 1+ 个换行符
  • |
  • \G(?!^)在上一场比赛结束时断言位置,而不是在开始
  • )关闭非捕获组
  • \r?\n[^:\r\n]+匹配换行符,然后匹配除 : 之外的任何字符 1+ 次或换行
  • : 匹配空间,:和空间
  • (捕获 第 2 组
  • [^\r\n]+匹配除换行符以外的任何字符 1+ 次
  • (?:非捕获组
  • \r?\n匹配换行符
  • (?!.* : )断言下一行不包含 :
  • [ \t]+[^\r\n]+匹配 1+ 个空格或制表符以及 1+ 次除换行符以外的任何字符
  • )*关闭组并重复 0+ 次
  • )关闭群 2

  • Regex demo

    关于正则表达式使用现有数据从 ipconfig 中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58829641/

    相关文章:

    regex - sed 无法理解正确的 (?) 正则表达式

    java - 使用 Google Guava 解析日志

    C 中的命令行参数整数错误检查

    regex - 使正则表达式更具体以排除某些字符的修改

    java - 带组的正则表达式负前瞻

    java - 线性方程的解析系数

    regex - 使用负向后查找的正则表达式在Notepad++中不起作用

    Javascript 正则表达式负向预测(验证恰好 {X} 次出现,而不是更多)

    javascript - 正则表达式查找组不起作用

    java - XML 解析错误