【发布时间】:2019-10-31 10:32:07
【问题描述】:
我有一个大的 xml 文件,我正在逐行读取。
<Role elemId="id35" island_id="0" role_name="Design" value="True"/>
<Role elemId="id34" island_id="0" role_name="Lead" value="False"/>
我需要做的是,每当我在字符串中看到 role_name 时,我都需要将其设为空白。
例如,这是我想要的输出。请注意,role_name 是空白的。
<Role elemId="id35" island_id="0" role_name="" value="True"/>
<Role elemId="id34" island_id="0" role_name="" value="False"/>
role_name 可以有任意数量的值或值的组合。所以我无法对其进行硬编码
这是我的工作代码:
#!/usr/bin/perl
use strict;
use warnings;
print "\nPerl Starting ... \n\n";
while (my $recordLine =<DATA>)
{
chomp($recordLine);
print "$recordLine ...\n";
if (index($recordLine, "role_name") != -1)
{
#Found role_name tag ... now blank it ... how?
$recordLine =~ s/role_name="Design"/role_name=""/g; #I need a generic reg experssion here
print "recordLine: $recordLine ...\n";
}
}
print "\nPerl End ... \n\n";
__DATA__
<Role elemId="id35" island_id="0" role_name="Design" value="True"/>
<Role elemId="id34" island_id="0" role_name="Lead" value="False"/>
【问题讨论】:
-
$recordLine =~ s/role_name=".*?"/role_name=""/g;
-
@Andrey 谢谢你,这正是我想要的。一个正则表达式。请将其添加为答案,我会接受。