Regex 如何使用正则表达式在分号后提取systeminfo中的信息?
我正在命令行中运行systeminfo命令以获取系统信息。 我只需要几个,不是所有的。我怎样才能用正则表达式导出信息Regex 如何使用正则表达式在分号后提取systeminfo中的信息?,regex,Regex,我正在命令行中运行systeminfo命令以获取系统信息。 我只需要几个,不是所有的。我怎样才能用正则表达式导出信息 编辑:我使用的是LabView,它使用与Perl兼容的正则表达式() 我只需要以下信息 主机名(主机名:), Microsoft Windows 8.1 Pro(Betriebssystemname:), 07.12.2015,07:54:09(Systemstartzeit:), 1和[01]:Intel64系列6型60步进3 GenuineIntel~2501 MHz(Pro
编辑:我使用的是LabView,它使用与Perl兼容的正则表达式() 我只需要以下信息
主机名(主机名:)
,Microsoft Windows 8.1 Pro(Betriebssystemname:)
,07.12.2015,07:54:09(Systemstartzeit:)
,1和[01]:Intel64系列6型60步进3 GenuineIntel~2501 MHz(Prozessor(en):)
,用户名(Registrierter Benutzer:)
,8.105 MB(Gesamter physischer Speicher:)
,3.315MB(Verfügbaer physischer Speicher:)
,8.105MB(Virtueller-Arbeitsspeicher:Maximale-Gröe:)
,2.485 MB(Virtueller-Arbeitsspeicher:Verfügbar:)
,5.620MB(Virtueller-Arbeitsspeicher:Zurzeit-verwendet:)
我的命令systeminfo提供以下文本:
Hostname: NameOfTheHost
Betriebssystemname: Microsoft Windows 8.1 Pro
Betriebssystemversion: 6.3.9600 Nicht zutreffend Build 9600
Betriebssystemhersteller: Microsoft Corporation
Betriebssystemkonfiguration: Mitglied der Domäne/Arbeitsgruppe
Betriebssystem-Buildtyp: Multiprocessor Free
Registrierter Benutzer: username
Registrierte Organisation:
Produkt-ID: 0000-0000-0000
Ursprüngliches Installationsdatum: 01.01.2010, 13:41:25
Systemstartzeit: 07.12.2015, 07:54:09
Systemhersteller: Hewlett-Packard
Systemmodell: HP ProBook 650 G1
Systemtyp: x64-based PC
Prozessor(en): 1 Prozessor(en) installiert.
[01]: Intel64 Family 6 Model 60 Stepping 3 GenuineIntel ~2501 MHz
BIOS-Version: Hewlett-Packard L77 Ver. 01.05, 29.04.2014
Windows-Verzeichnis: C:\Windows
System-Verzeichnis: C:\Windows\system32
Startgerät: \Device\HarddiskVolume1
Systemgebietsschema: de-at;Deutsch (Österreich)
Eingabegebietsschema: de;Deutsch (Deutschland)
Zeitzone: (UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien
Gesamter physischer Speicher: 8.105 MB
Verfügbarer physischer Speicher: 3.315 MB
Virtueller Arbeitsspeicher: Maximale Größe: 8.105 MB
Virtueller Arbeitsspeicher: Verfügbar: 2.485 MB
Virtueller Arbeitsspeicher: Zurzeit verwendet: 5.620 MB
Auslagerungsdateipfad(e): Nicht zutreffend
Domäne: domainname.local
Anmeldeserver: \\loginserver
Hotfix(es): 148 Hotfix(e) installiert.
[01]: KB2899189_Microsoft-Windows-CameraCodec-Package
[02]: KB000000
[03]: KB000000
..... /* shortened */
[148]: KB000000
Netzwerkkarte(n): 3 Netzwerkadapter installiert.
[01]: Bluetooth-Gerät (PAN)
Verbindungsname: Bluetooth-Netzwerkverbindung 3
Status: Medien getrennt
[02]: Intel(R) Ethernet-Verbindung I217-V
Verbindungsname: Ethernet 2
DHCP aktiviert: Ja
DHCP-Server: 10.0.0.1
IP-Adresse(n)
[01]: 10.0.0.10
[02]: 0000::0000:0000:0000:0000
[03]: Broadcom BCM943228HMB 802.11abgn 2x2 Wi-Fi Adapter
Verbindungsname: WiFi 2
DHCP aktiviert: Ja
DHCP-Server: 10.0.0.10
IP-Adresse(n)
[01]: 10.0.0.11
[02]: 0000::0000:0000:0000:0000
Anforderungen für Hyper-V: Erweiterungen für den VM-Überwachungsmodus: Ja
Virtualisierung in Firmware aktiviert: Nein
Adressübersetzung der zweiten Ebene: Ja
Datenausführungsverhinderung verfügbar: Ja
你真的需要给我们提供更多关于你想要使用的正则表达式风格或语言的细节。假设您想在c#中使用它,下面是如何循环所有匹配:
try {
Regex regexObj = new Regex(@"([^:]*):\s*(.*)");
Match matchResults = regexObj.Match(subjectString);
while (matchResults.Success) {
// matched text: matchResults.Value
// match start: matchResults.Index
// match length: matchResults.Length
matchResults = matchResults.NextMatch();
}
} catch (ArgumentException ex) {
// Syntax error in the regular expression
}
然后你可以检查一下,你想要哪一个。但老实说,我不会用正则表达式来完成这个任务。因为您只需要列表中的几个已知条目,所以请遍历这些行并检查这些行是否以例如“Hostname:”开头,如果是,则取字符串的其余部分
如果没有进一步的细节,我们将无法给出更精确的答案。我使用的是LabView,它使用的是与Perl兼容的正则表达式()。在Perl中,上面的正则表达式将是while($subject=~m/([^:]*):\s*(.*)/g){匹配的文本=$&}