Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 数据中带冒号的正则表达式_Regex_Perl - Fatal编程技术网

Regex 数据中带冒号的正则表达式

Regex 数据中带冒号的正则表达式,regex,perl,Regex,Perl,我有一个文本文件,我想从中删除一些数据。使用冒号“:”作为分隔符分隔数据。大约有9个分离。第7列之后的数据通常为空,因此没有用处,但附加的冒号仍然存在 该文件的一个示例如下所示: column1:column2:column3:column4:column5:column6:column7:column8:column9:column10 我希望在第8列之后删除该信息。因此,要删除的数据将是: :column9:column10 有人能告诉我如何在正则表达式中这样做吗 我一直在阅读,没有找到

我有一个文本文件,我想从中删除一些数据。使用冒号“:”作为分隔符分隔数据。大约有9个分离。第7列之后的数据通常为空,因此没有用处,但附加的冒号仍然存在

该文件的一个示例如下所示:

column1:column2:column3:column4:column5:column6:column7:column8:column9:column10
我希望在第8列之后删除该信息。因此,要删除的数据将是:

:column9:column10
有人能告诉我如何在正则表达式中这样做吗

我一直在阅读,没有找到一种方法来分离一个冒号和x个冒号后面的文本

如果您能提供任何帮助,我们将不胜感激

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


下面的正则表达式将保留前8列,并放弃所有其他列

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

假定为简单的单行记录。

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

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


假设简单的单行记录。

您的正则表达式使用哪种工具/语言?我使用的是格式一致的PerlIs?是
column8
还是
column.
的第8个实例?一致的格式可能
((?:column\d+:){1,8})。*
?然后替换为
\1
。您的正则表达式使用哪种工具/语言?我使用的是格式一致的PerlIs?是
column8
还是
column.
的第8个实例?一致的格式可能
((?:column\d+:){1,8})。*
?然后替换为
\1
\K(保持??)--酷!我以前没用过。我会用更长的:s/^([^::]*(?::[^:]*){7})。*/$1/@Ken Schumack,引入捕获会减慢匹配速度。@ikegami是的,我知道。我很高兴了解\K修改器。我以前从未在任何文档中注意到它,但我很高兴在这篇文章中“发现”了它。Perl当然是一种丰富的语言!顺便说一句:我查看了perldoc perlretut的输出,没有看到任何关于\K的提及。有人知道哪个perl文档将包含关于它的信息吗?我当然想知道还有哪些我不知道的修饰符:-)找到了:perldoc perlre\K(keep??)--酷!我以前没用过。我会用更长的:s/^([^::]*(?::[^:]*){7})。*/$1/@Ken Schumack,引入捕获会减慢匹配速度。@ikegami是的,我知道。我很高兴了解\K修改器。我以前从未在任何文档中注意到它,但我很高兴在这篇文章中“发现”了它。Perl当然是一种丰富的语言!顺便说一句:我查看了perldoc perlretut的输出,没有看到任何关于\K的提及。有人知道哪个perl文档将包含关于它的信息吗?当然,我想知道还有哪些我不知道的修饰符:-)找到了:perldoc perlRey您的第一个建议应该使用范围[0..7],否则您将错过第一列并包括第9列。第二个建议删除最后两列,而不是保留第一列eight@Ken舒马克,我在想什么?已修复。您的第一个建议应使用范围[0..7],否则您将错过第1列并包括第9列。第二个建议删除最后两列,而不是保留第一列eight@Ken舒马克,我在想什么?固定的。