Regex 如何在Perl中替换多个文件中的特定区域?

Regex 如何在Perl中替换多个文件中的特定区域?,regex,perl,replace,Regex,Perl,Replace,我正在处理许多xml文件。我只想替换所有文件中特定区域中的某些特定内容。例如: 这些文件可能包含以下许多内容: <h2>Content comes here</h2> 现在我只想替换上面的一个词。。。所有文件中的区域 请给我一些建议。提前感谢。Perl中的一般文本替换通常使用正则表达式和s///运算符完成。但是,仅使用正则表达式来解释XML文件的结构被认为是非常不明智的 您应该使用解析XML的模块。Simple将允许您使用hashrefs作为属性和子标记等将整个文档作为

我正在处理许多xml文件。我只想替换所有文件中特定区域中的某些特定内容。例如:

这些文件可能包含以下许多内容:

<h2>Content comes here</h2>
现在我只想替换上面的一个词。。。所有文件中的区域


请给我一些建议。提前感谢。

Perl中的一般文本替换通常使用正则表达式和s///运算符完成。但是,仅使用正则表达式来解释XML文件的结构被认为是非常不明智的

您应该使用解析XML的模块。Simple将允许您使用hashrefs作为属性和子标记等将整个文档作为Perl对象加载,然后您可以遍历它并执行所需的替换。但是,您必须根据自己的选择写回该结构

在我看来,解析器是一个很好的选择。这在概念上有点棘手,但它的设计正是为了做你想要做的事情。您设置了处理函数,每当解析器找到标记的开始或结束时,就会调用这些处理函数。在您的情况下,所有这些必须做的就是输出标记及其内容,除非它是h2标记,在这种情况下,您需要做一些额外的处理

还有一些面向DOM的解析器,如果您习惯于在JavaScript或其他基于DOM的XML库中执行类似的操作,那么可能需要使用这些解析器


最后,为了完整起见,您可能可以编写一个非常短的XSLT文件来完成此转换,而不是专家,因此不确定如何使用XML::XSLT并应用它,基本上是在一行中。

格式化提示:如果将其放在一行中,您可以使用HTML标记作为文本。请随意再次编辑。