首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl正则表达式在某些记录(但不是所有记录)上缺少尾部括号?

Perl正则表达式在某些记录(但不是所有记录)上缺少尾部括号?
EN

Stack Overflow用户
提问于 2011-08-05 00:39:51
回答 1查看 103关注 0票数 1
代码语言:javascript
复制
my @info = `net view printserver2`;
foreach my $printer (@info)
{
$printer =~ /.+\s+Print\s+\((.+)\)/;
print "$1\n";

给了我:

代码语言:javascript
复制
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

这是原始的:

代码语言:javascript
复制
(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                        

我的正则表达式有什么问题?

这就是我想要的结果:

代码语言:javascript
复制
16-83
16-84
16-84b
16-85
16-SW
17-80
18-45
18-51
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-05 00:45:16

您的正则表达式与行中的最后一个")“匹配。您需要指定一个非贪婪匹配:

代码语言:javascript
复制
$printer =~ /.+\s+Print\s+\((.+?)\)/;

.+后面的问号表示一有机会就停下来。

或者,更好的方法是指定不能匹配")“:

代码语言:javascript
复制
$printer =~ /.+\s+Print\s+\(([^)]+)\)/;
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6945228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档