簡體   English   中英

使用現有數據從 ipconfig 中提取數據的正則表達式

[英]Regex to extract data from ipconfig using existing data

我有以下正則表達式可以提取運行良好的鍵值對。 我已經通過另一個系統從許多機器接收到這些數據,我更願意使用我已經擁有的數據,而不是使用 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

回答問題 #1:

/adapter (.*):/

假設有不同類型的適配器(以太網、無線等)。

您還可以得到添加另一個(.*)的類型

(.*) adapter (.*):/

如果您可以使用\G錨來獲取重復匹配以獲取例如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(?!^)在上一場比賽結束時斷言 position,而不是在開始時
  • )關閉非捕獲組
  • \r?\n[^:\r\n]+匹配換行符,然后匹配除:或換行符之外的任何字符 1+ 次
  • :匹配空格, :和空格
  • (捕獲組 2
    • [^\r\n]+匹配除換行符以外的任何字符 1+ 次
    • (?:非捕獲組
      • \r?\n匹配換行符
      • (?.:* : )斷言下一行不包含:
      • [ \t]+[^\r\n]+匹配 1+ 個空格或制表符以及 1+ 次除換行符以外的任何字符
    • )*關閉組並重復 0+ 次
  • )關閉第 2 組

正則表達式演示

這有點復雜,但你可以簡化一下,

(?i)^\s{3,}(DNS[^.:]*)[^:\r\n]*:\s*(?:(?:[a-z0-9]*\.[a-z0-9]*[\r\n]\s{10,})+[a-z0-9]*\.[a-z0-9]*)|(?:(?:(?:\d+\.){3}\d+)\s*)+(?:(?:\d+\.){3}\d+)|^\s{3,}(?:[^.:]*)[^:\r\n]*:\s*(.*)$|^([^:]+):$|^(.*)$

我不確定其他樣品的外觀。

寫這樣的表達式的關鍵是交替。 我們會首先選擇最復雜的模式,然后繼續選擇簡單的模式(類似於 FizzBuzz)。

在這里,我們最復雜的模式是多線模式。 收集之后,剩下的更簡單的線條。


如果您想簡化/修改/探索表達式,它已在regex101.com的右上角面板上進行了解釋。 如果您願意,您還可以在此鏈接中觀看它如何與一些示例輸入匹配。


正則表達式電路

jex.im可視化正則表達式:

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM