regex - 使用 perl 拆分空格

标签 regex perl

我有这行代码来拆分文本文件中的空格:

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/

相关文章:

perl - 如何从引用的变量中获取 "unlink"Perl 数组引用?

perl - 在 Perl 中生成 getter 和 setter 而不是硬编码它们有缺点吗?

java - 有效地将不同的可能子串匹配到相同的值

javascript - 家庭住址的正则表达式

c++ - 检查字符串以匹配子字符串

java - 将特定模式与范围匹配的正则表达式

perl - 如何将稍后创建的小部件对象发送到 Tk 中的回调?

未找到 Perl 模块,但已安装

c++ - 正则表达式搜索文本然后匹配元素

Perl 数值排序 : how to ignore leading alpha character