[英]File parsing in Perl
我正在尝试解析以下格式的文件。
Case1: 0x5sdf258:648s4df ..;. ABCD hhbdch ; extra text
Case2: 0xdef58e1:18w4we1 .... HCDC ajdknlmk ;extra text
我想在分号后删除多余的文本,因此我使用以下行
$row =~ s/;.*//g;
这在情况2下有效,但在情况1下失败。在两种情况下都可以执行我的任务的方法吗?
好像您想要这样的东西,
$row =~ s/;[^;]*$//g;
要么
$row =~ s/;[^;\n]*$//g;
这将删除最后一个分号( 包括分号 )之后的文本。
[^;]*
否定的字符类,与任何字符匹配,但不匹配;
,零次或多次。
$
断言我们已经结束了。
码:
use strict;
use warnings;
while(my $line = <DATA>) {
$line =~ s/;[^;]*$//g;
print $line."\n";
}
__DATA__
Case1: 0x5sdf258:648s4df ..;. ABCD hhbdch ; extra text
Case2: 0xdef58e1:18w4we1 .... HCDC ajdknlmk ;extra text
输出:
Case1: 0x5sdf258:648s4df ..;. ABCD hhbdch
Case2: 0xdef58e1:18w4we1 .... HCDC ajdknlmk
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.