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