【问题标题】:Parsing Text in Perl (loop)在 Perl 中解析文本(循环)
【发布时间】:2013-12-08 18:57:01
【问题描述】:

我正在尝试解析一个看起来像这样的文件:

TIME: 07/24/13 15:30:04
ASPATH: 172193 19601 14835 19074 19420 4704 8266 9486 8580

我已经开始研究解析器了,但是由于我是 perl 新手,所以我不知道如何解析困扰我的特定行,

 ASPATH: 172193 19601 14835 4758 15731 3341 

这些是图节点,表示链接 172193-->19601--->14835 等等。 我不想将这些数据按原样存储在我的数据库中,相反,我想打破它并将每个节点插入数据库中(因为与该表将链接到的节点的数据库有关系),索引表示路径。比如,

node       index
172193       1
19601        2
14835        3

and so on.....

所以索引是为了让我知道节点之间的连接。因此,如果我开始处理下一条记录,它将再次从索引 1 开始。

这是我已经不包括所有属性(尤其是 ASPATH)但让我感到困扰的。

        } elsif (/^ASPATH/) {
            ##HERE IS WHERE I AM LOST AS EXPLAINED** 
        }

【问题讨论】:

    标签: regex perl


    【解决方案1】:
            }elsif (/^ASPATH/) {
                my @nodes = split /\s/;
                shift @nodes;   # discard ASPATH
    
                my $index = 0;
                foreach my $node (@nodes) {
                    $index++;
    
                    # process ($node, $index) here
                }
            }
    

    【讨论】:

    • @choroba:您可以使用' ' 作为参数,也可以在空格上进行拆分。但是,是的,'\s' 不正确。感谢您的编辑。 FWIW,这个错误在原始问题中也很猖獗。
    • 事实上,在这种情况下,您可以使用不带参数的split :-)
    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 2012-10-09
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-25
    • 2023-03-15
    相关资源
    最近更新 更多