-4

我有一个这样的列表:

自行车:儿童  
289  
自行车:山地自行车  
928  
自行车:公路自行车  
870  
露营和户外装备  
761  
独木舟、皮划艇、划艇  
231  
登山装备  
120  
自由重量级和家庭健身房  
583  
GPS和定位器  
104  
高尔夫装备  
1,223  
其他健身器材  
668  

我只需要跳过数字或空白的行

if (($line =~ /0..9/) || ($line eq "")){}  
else{  
4

4 回答 4

1
print $line if $line !~ /[0-9]/ and $line =~ /\S/;

perldoc perlre . 如果你付出一些努力,你会学到更多。

于 2012-04-14T16:17:32.217 回答
1

如果你写

while (<>) {
  next unless /[^\d,\s]/;
    :
}

您的程序将跳过所有仅包含数字、逗号和空格的行。

这个程序显示了这个想法

use strict;
use warnings

while (<DATA>) {
  next unless /[^\d,\s]/;
  print;
}

__DATA__
Bicycles: Childrens  
289  
Bicycles: Mountain Bikes  
928  
Bicycles: Road Bikes  
870  
Camping & Outdoors Equipment  
761  
Canoes, Kayaks, Row-Boats  
231  
Climbing Equipment  
120  
Freeweights and Home Gyms  
583  
GPS and Locators  
104  
Golf Equipment  
1,223  
Other Fitness Equipment  
668  

输出

Bicycles: Childrens  
Bicycles: Mountain Bikes  
Bicycles: Road Bikes  
Camping & Outdoors Equipment  
Canoes, Kayaks, Row-Boats  
Climbing Equipment  
Freeweights and Home Gyms  
GPS and Locators  
Golf Equipment  
Other Fitness Equipment  
于 2012-04-14T20:03:59.910 回答
0
if ($line !~ /^[\d,]*[\n\r]*$/) {
  # do something
}   
else {
  # blank or "digits & comas" only line
}

“空白”是指带有可选行尾的空字符串(以防您不使用chomp

于 2012-04-14T20:32:18.980 回答
0

下一个 if (!$line || $line != int($line));

第一个是空白值检查,第二个是检查该值是否为整数。

于 2012-04-15T08:48:29.423 回答