我正在尝试以下列格式解析文件。
Case1: 0x5sdf258:648s4df ..;. ABCD hhbdch ; extra text
Case2: 0xdef58e1:18w4we1 .... HCDC ajdknlmk ;extra text
我想在分号后删除额外的文本,所以我使用以下行
$row =~ s/;.*//g;
这适用于案例2但在案例1中失败。是否有一种方法可以在两种情况下执行我的任务?
答案 0 :(得分:1)
好像你想要这样的东西,
$row =~ s/;[^;]*$//g;
OR
$row =~ s/;[^;\n]*$//g;
这将删除最后一个分号后的文本(包括分号)。
[^;]*
否定了与任何charcater但不匹配;
的字符类,零次或多次。
$
声称我们已经结束了。
<强>代码:强>
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
答案 1 :(得分:0)