数据中冒号的正则表达式

时间:2017-10-23 02:21:24

标签: regex perl

我有一个文本文件,我希望从中删除一些数据。使用冒号分隔数据:'作为分隔符。大约有9个分离。第7列之后的数据通常为空,因此无用,但额外的冒号仍在那里。

该文件的一个例子是这样的:

column1:column2:column3:column4:column5:column6:column7:column8:column9:column10

我希望从column8之后删除信息。所以要删除的数据是:

:column9:column10

有人可以告诉我如何在Regex中这样做吗?

我一直在阅读,没有在哪里找到一种方法可以在x个冒号之后分离冒号和文本。

非常感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:4)

$_ = join ":", ( split /:/, $_, -1 )[0..7];

s/(?::[^:]*){2}\z//;

答案 1 :(得分:2)

以下正则表达式将保留前8列并丢弃所有其他列。

s/^[^:]*(?::[^:]*){7}\K.*//;

假设简单的单行记录。