我正在编写一个perl脚本,其中一部分是捕获不以数字开头的数据。我试过了(\w)\s+(\d+)\s+(\S+)\s+(\d.+)
。下面是该文件的一些部分(太大了,无法放置所有行)。
我要捕捉的文字是
BBACCap 8 N/A 48,46,44,42,40,38,36,34,32,
或可以
IG-XL_DataTool N/A N/A N/A
或
DC-30 1 N/A 1,0
正则表达式确实匹配我需要的上述数据但是我也在捕捉数据(我不想要),例如
1 2
2 3, 4
以及(我不想要的)
1.0 BBAC-15 805-004-50 0301B5C5 0829-E 5445
aka: 805-004-02,805-004-03
但上面只有E 5445
aka: 805-004-02,805-004-03
。
对此有何帮助?
答案 0 :(得分:1)
很难确定你需要什么,但看起来你可以在空格上分割每一行,只选择前三个字段,拒绝任何第一个字段以十进制数字开头的行
这是一个演示,它从命令行中指定的文件中读取
while ( <> ) {
my @fields = split;
next if $fields[0] =~ /^[0-9]/;
print "@fields[0..2]\n";
}