my @info = `net view printserver2`;
foreach my $printer (@info)
{
$printer =~ /.+\s+Print\s+\((.+)\)/;
print "$1\n";给了我:
16-83
16-84) HP DesignJet 755CM(C3198A
16-84b
16-85
16-SW
17-80
18-45) HP DesignJet 250C (D/A1
18-51) HP DesignJet 650C(C2859B这是原始的:
(16-83) HP Designjet 800 42 by HP
(16-84) HP DesignJet 755CM(C3198A)by HP
(16-84b) HP LaserJet 5100 Series PCL6
(16-85) HP Designjet T1100ps 44in HPGL2
(16-SW) HP LaserJet 4100 Series PCL6
(17-80) HP Color LaserJet 5500 PCL 6
(18-45) HP DesignJet 250C (D/A1) by HP
(18-51) HP DesignJet 650C(C2859B) by HP 我的正则表达式有什么问题?
这就是我想要的结果:
16-83
16-84
16-84b
16-85
16-SW
17-80
18-45
18-51发布于 2011-08-05 00:45:16
您的正则表达式与行中的最后一个")“匹配。您需要指定一个非贪婪匹配:
$printer =~ /.+\s+Print\s+\((.+?)\)/;.+后面的问号表示一有机会就停下来。
或者,更好的方法是指定不能匹配")“:
$printer =~ /.+\s+Print\s+\(([^)]+)\)/;https://stackoverflow.com/questions/6945228
复制相似问题