我有这行代码来拆分文本文件中的空格:
my @line_splits = split /\s+/, $ine;
这是文本文件的部分内容:
1 2016-09-27 14:07:20.084877
2 2016-09-27 14:07:20.084998
3 2016-09-27 14:07:20.131343
4 2016-09-27 14:07:20.131374
6 2016-09-27 14:07:20.137359
7 2016-09-27 14:07:20.137556
8 2016-09-27 14:07:20.137796
9 2016-09-27 14:07:20.437769
10 2016-09-27 14:07:20.437796
100 2016-09-27 14:07:23.293661
我的目标是获取日期和时间(我知道在 $line_splits[1] 和 $line_splits[2] 上)。
但是当我运行我的 perl 脚本时,从 1 到 99 的行是错误的,而在第 100 行及以上我得到了我想要的。
Time Stamp: 98 2016-09-27 --> line 98
Time Stamp: 99 2016-09-27 --> line 99
Time Stamp: 2016-09-27 14:07:23.293661 --> line 100
Time Stamp: 2016-09-27 14:07:23.299406 --> line 101
Time Stamp: 2016-09-27 14:07:23.299437 --> line 102
谁能告诉我正则表达式是否有问题或有其他方法可以做到这一点?
我不知道它是否已在此处复制,但非常感谢任何帮助。
谢谢你:)
最佳答案
哇,很多复杂的答案,但解决方案真的很简单。
只需使用 split
而不使用 /\s+/
正则表达式。
default behaviour - 或者如果您只指定要拆分的 ' '
会得到什么 - 它会忽略前导空格。但是对于 /\s+/
它没有。
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
while ( <DATA> ) {
chomp;
my @fields = split;
print $fields[2],"\n"
}
__DATA__
1 2016-09-27 14:07:20.084877
2 2016-09-27 14:07:20.084998
3 2016-09-27 14:07:20.131343
4 2016-09-27 14:07:20.131374
6 2016-09-27 14:07:20.137359
7 2016-09-27 14:07:20.137556
8 2016-09-27 14:07:20.137796
9 2016-09-27 14:07:20.437769
10 2016-09-27 14:07:20.437796
100 2016-09-27 14:07:23.293661
关于regex - 使用 perl 拆分空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39740783/