正则表达式:如何排除一个单词和一个字符?

时间:2014-01-09 19:24:08

标签: regex perl sitescope

我正在使用SiteScope中的动态磁盘监视器,我需要一个不包含“Harddisk”和“D”字样的正则表达式。

到目前为止,我发现了这个:

^(?!.*Harddisk).*/percent full

如何在同一表达式中添加部分以排除“D”?我试过这个并没有用:

^(?!.*Harddisk|^D).*/percent full

更多详情:

此表达式显示服务器具有的所有磁盘的完整百分比:

/.*/percent full/

这将排除其名称以“Harddisk”开头的所有磁盘:

/^(?!.*Harddisk).*/percent full/

我需要的是改进最后一个表达式以排除所有“硬盘”以及磁盘“D”。

提前感谢您的帮助。

此致,Estrella。

4 个答案:

答案 0 :(得分:0)

你可以试试这个:

^(?>[^HD/]++|\BH|H(?!arddisk)|/(?!percent full))+/percent full

(如果需要,不要忘记逃避斜线)

答案 1 :(得分:0)

也许以下内容会有所帮助:

use strict;
use warnings;

while (<DATA>) {
    print if !/(?=.*\bHarddisk\b)(?=.*\bD\b)/;
}

__DATA__
Harddisk A
disk D
Harddisk D

输出:

Harddisk A
disk D

if评估的表达式具有以下形式:!(x and y)

答案 2 :(得分:0)

保持简单。

m{/percent full} && !/\bHarddisk\b/ && !/D/

答案 3 :(得分:0)

一位同事帮助我并找到答案,我想与你分享:

/^(?!.*[E])^(?!.*(HarddiskVolume)).*/percent full/

我希望这会有所帮助。

感谢所有回答此问题的人!

-Estrella