Xml 在perl中用另一个文本替换跨多行标记之间的文本
我需要将文件中标记(Xml 在perl中用另一个文本替换跨多行标记之间的文本,xml,perl,xml-parsing,Xml,Perl,Xml Parsing,我需要将文件中标记(…)之间的多行文本替换为Perl中其他文件中的另一个多行文本。我正在使用搜索和替换功能,但当前不工作。如果开始标记和结束标记都在同一行中,那么我可以替换它们,否则它不会替换。对于Ex,在目标文件中: . . . <stats> <stat type="string" value="a" /> <stat type="string" value="b" /> <stat type
…
)之间的多行文本替换为Perl中其他文件中的另一个多行文本。我正在使用搜索和替换功能,但当前不工作。如果开始标记和结束标记都在同一行中,那么我可以替换它们,否则它不会替换。对于Ex,在目标文件中:
.
.
.
<stats>
<stat type="string" value="a" />
<stat type="string" value="b" />
<stat type="string" value="c" />
<stat type="string" value="d" />
</stats>
.
.
.
.
。
.
.
.
.
.
.
我的代码片段的一部分如下所示:
my $replacetext="<stats>"."@lines"."</stats>";
my $searchtext="<stats>.*</stats>";
# Here @file_lines is the array containing destination file and @lines is the array containing source file.
foreach (@file_lines)
{
$_=~ s/$searchtext/$replacetext/g;
}
my$replacetext=”“.“@lines”。”;
my$searchtext=“*”;
#这里@file_line是包含目标文件的数组,@lines是包含源文件的数组。
foreach(@file\u行)
{
$\=~s/$searchtext/$replacetext/g;
}
'.*
仅当开始标记和结束标记在同一行时才起作用 这是不正常的。正如@mu所提到的,尝试使用XML解析器——例如,您可以实现您想要的
请看一下教程
这超出了您的需要,但将为您提供一个很好的介绍,让您了解如何在Perl中使用XMLs。正如@mu所提到的,尝试使用XML解析器——例如,您可以实现您想要的 请看一下教程
这超出了您的需要,但将为您提供一个很好的介绍,让您了解如何在Perl中使用XMLs不要使用正则表达式来解析XML。使用XML解析器 使用包装器的示例如下:
my$source;
$source={打开我的$source,“不要使用正则表达式来解析XML。请使用XML解析器
使用包装器的示例如下:
my$source;
$source={open my$source,'虽然使用XML库通常是正确的做法,但是如果文件不是太大,并且您不希望实际解析和遍历XML的开销(例如,只需要很小的更改),您仍然可以以快速而肮脏的方式执行此操作
my $joined_file = join "\n", @file_lines; # one long multi-line string
$joined_file =~ s/$searchtext/$replacetext/sg; # s means multi-line
my @updated_file_lines = split /\n/, $joined_file; # result
尽管使用XML库通常是正确的做法,但如果文件不太大,并且不希望实际解析和遍历XML的开销(例如,只需要一些小的更改),您仍然可以以快速而肮脏的方式执行此操作
my $joined_file = join "\n", @file_lines; # one long multi-line string
$joined_file =~ s/$searchtext/$replacetext/sg; # s means multi-line
my @updated_file_lines = split /\n/, $joined_file; # result
如果文件不太大,将其加载到字符串并替换正则表达式,然后保存,如果文件太大,则需要使用标志变量,该变量将指示指针是否位于应替换的文本中…编程时不需要单独尝试思考?您是否考虑过使用XML解析器?CPAN有很多用于处理XML的工具。如果文件不太大,则将其加载到字符串并替换正则表达式,然后保存,如果文件较大,则需要使用标志变量,该变量将指示文本中的指针是否应该被替换…编程时不需要单独尝试思考?您是否考虑过使用XML解析器?CPAN有许多用于处理XML的工具。