【发布时间】:2016-03-17 04:48:17
【问题描述】:
我使用下面的表达式来获取一行文本的第二项。
/\s(.*?) /
一个示例输出可能是23:55:01。我也可以删除同一表达式中的冒号吗?
示例输入是:
16-03-17 05:00:02 JRTF: ...
... 之后的所有内容都应该是多余的。在这种情况下,我需要提取050002。
编辑(现在是 Perl / grep 问题):
我需要这样做的原因是我得到所有大于当前时间的值。
我目前在 Perl 中使用 grep 以下列方式执行此操作:
my @windowLog = grep {
join("", split(":", (split(" ", $_))[1])) > $UTCTime
} @oldLog;
其中@oldLog 是一个字符串数组,类似于上面的示例,$UTCTime 是当前时间。
看起来相当低效和不整洁。
【问题讨论】:
-
使用另一个替换代码删除冒号。
-
你能显示你的输入文本行和想要提取的输出吗?
-
@ritesht93 没问题 - 完成了。
-
您需要使用正则表达式替换,
^(\S*)\s(\d{2}):(\d{2}):(\d{2})\s(.*)^将是正则表达式并替换为\2\3\4。如果您可以提及您正在使用的正则表达式风格/编程语言,那么我也可以提供一个示例 -
@ritesht93 谢谢 - 我已经更新了这个问题,所以它现在也是一个 grep 和 Perl 问题。