2014-12-17 5 views
5

Sto lavorando a un progetto basato su WPF,C# and MVVM. Si tratta fondamentalmente di un'applicazione configurabile tramite dispositivo di rete via telnet. Ho un output seguente nella mia casella di testo wpf e voglio estrarre i valori delle colonne dell'indirizzo MAC.Come estrarre la stringa corrispondente da un testo grande?

active500EM#sh mac-address-table 
Read mac address table.... 
Vlan Mac Address     Type Creator Ports 
---- --------------------------- ------- ----------------------- 
1 00-23-8b-87-9a-6b   DYNAMIC Hardware Ethernet1/0/12 
1 00-8c-fa-72-94-b1   DYNAMIC Hardware Ethernet1/0/1 
1 3c-43-8e-5c-3e-05   DYNAMIC Hardware Ethernet1/0/8 
1 d0-59-e4-b9-e9-3e   DYNAMIC Hardware Ethernet1/0/8 
1 f8-f7-d3-00-03-c0   DYNAMIC Hardware Ethernet1/0/8 
1 f8-f7-d3-00-03-f0   STATIC System CPU 
active500EM# 

penso che non posso usare espressioni regolari, perché io non sono nulla a match.Any aiuto e suggerimento sarebbe molto apprezzabile.

+0

quale lingua stai pensa di utilizzare? Con 'awk' nella riga di comando sarebbe abbastanza veloce. – fedorqui

+0

@fedorqui è un progetto WPF con C#, vedi i tag – VMAtm

+0

puoi usare regex !, MAC ha un formato predefinito che puoi usare sed in linux, puoi importare in excel – ACV

risposta

5

Cosa c'è di sbagliato con l'utilizzo di una regex?

\b(?<mac_addr>([0-9a-f]{2}-){5}[0-9a-f]{2})\b 

quindi è possibile utilizzare:

var allMacs = Regex.Matches(YOUR_TEXT, REGEX_PATTERN) 
        .Select(m => m.Groups["mac_addr"].Value) 
        .ToList(); 

per ottenere un List<String> con tutti gli indirizzi MAC corrispondenti.

+3

Questo è meglio di min :) grazie. –

+2

Ha funzionato grazie. – CodeTheft

1

Questo è regex veloce

(\w|\d){2}-(\w|\d){2}-(\w|\d){2}-(\w|\d){2}-(\w|\d){2}-(\w|\d){2} 
Problemi correlati