正则表达式

【备注:这里记录下常用的正则表达式匹配规则】

1. 匹配一行内容并取出其中的值 <--> /^(\S+)\s+(\S+)\s+(\d*)\S?\s+(\d*)\S?\s+(\d*)\S?\s+(\d*)\S?\s+(\S*)/

这里输入命令df -PTBK可看到磁盘信息如下:

这时如果需要获取具体的数值,可以按如下处理(nodejs实现):

'use strict';

var execFile = require('child_process').execFile;
var Log = require('../lib/log').GetLogger();

var BINPATH = '/bin/df';
var PARAMS = ['-PTBK'];

var VolumeREGEXP = /^(\S+)\s+(\S+)\s+(\d*)\S?\s+(\d*)\S?\s+(\d*)\S?\s+(\d*)\S?\s+(\S*)/;
var UNITS = 1024;


function DiskVolumeProbe(cb) {
    Log.info('Call Func DiskVolumeProbe');

    execFile(BINPATH, PARAMS, function (error, stdout, stderr) {
        if (error) {
            return cb(error);
        } else {
            if (stderr) {
                Log.error(stderr);
            }

            var result = ParseVolumesData(stdout);
            return cb(error, result);
        }
    });
}
exports.DiskVolumeProbe = DiskVolumeProbe;


function ParseVolumesData(data) {
    Log.info('Call Func ParseVolumesData');

    var parseResult = [];

    var datas = data.split('\n');
    for (var i = 1; i < datas.length; i++) {
        var curLine = datas[i];

        // 空行不处理
        if (curLine.length === 0) {
            continue;
        }

        var result = curLine.match(VolumeREGEXP);
        if (result) {
            var fileSystemType = result[2];
            //do something
        } else {
            var MatchErr = new Error('[ ' + curLine + ' ] Not match to VolumeREGEXP');
            MatchErr.name = 'MatchErr';
            Log.error(MatchErr);
        }
    }

    return parseResult;
}
View Code

 

posted @ 2020-08-26 16:22  LuckyOven  阅读(209)  评论(0)    收藏  举报