正则表达式捕获不以数字开头但包含数字的文本

时间:2015-07-01 08:03:02

标签: regex perl

我正在编写一个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

对此有何帮助?

1 个答案:

答案 0 :(得分:1)

很难确定你需要什么,但看起来你可以在空格上分割每一行,只选择前三个字段,拒绝任何第一个字段以十进制数字开头的行

这是一个演示,它从命令行中指定的文件中读取

while ( <> ) {
    my @fields = split;
    next if $fields[0] =~ /^[0-9]/;

    print "@fields[0..2]\n";
}