问题描述
我正在使用 nodejs 执行某个 cmd 脚本,但是 cmd 的输出是字符串格式,我需要访问哪些磁盘编号处于脱机状态。
例如,我需要搜索的字符串是
"\r\nMicrosoft diskPart 版本 10.0.19041.610\r\n\r\n版权所有 (C) Microsoft Corporation。\r\n在计算机上:DESKTOP-HACFL5A\r\n\r\n 磁盘 ### 状态大小Free Dyn Gpt\r\n -------- ------------- ------- ------- --- ---\r \n 磁盘 0 在线 238 GB 1024 KB *\r\n 磁盘 1 在线 14 GB 9 GB *\r\n\r\n磁盘 1 现在是选定的磁盘。\r\n"
通过使用以下正则表达式,我得到了在线有 2 个磁盘的信息,但是我如何获得它们的磁盘编号?我需要正则表达式输出来将所有离线磁盘编号存储在一个数组中。
var str = JSON.stringify(stdout);
var matches = str.match( /Online/g )
console.log("matches is: ",matches)
匹配是:['在线','在线']
解决方法
这行得通:
\d+(?= Offline)
var str = `Microsoft DiskPart version 10.0.19041.610
Copyright (C) Microsoft Corporation.
On computer: DESKTOP-HACFL5A
Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Offline 238 GB 1024 KB *
Disk 1 Online 14 GB 9 GB *
Disk 1 is now the selected disk.`;
var matches = str.match( /\d+(?= Offline)/g );
console.log("matches is: ",matches)
用下面的代码让它工作
var str = JSON.stringify(stdout);
const t = str.replace(/\s+/g,' ').trim()
const regex = /\bDisk (\d+) Online\b/g;
console.log(Array.from(t.matchAll(regex),m => m[1]));
谢谢大家。