如何使用正则表达式查找字符串中所有脱机的磁盘号

问题描述

我正在使用 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]));

谢谢大家。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...