我正在使用命令行中的 perl 正则表达式操作来修改文件(在 linux 中),并且想知道为什么它无法修改文件。这是正则表达式:
perl -i -pe 'undef $/; s#(<web-app[^>]*>).*?(</web-app>)#\1CHEESE\n\2#gsi' filePath/web.xml
现在,这应该正确匹配多行块。但是,事实并非如此。样本输入:
<web-app xmlns= "http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<stuff goes here and tags and things>
</web-app>
然而,什么都没有改变。Dotall 应该匹配,这适用于在线正则表达式测试工具,但在 Perl 中失败。我究竟做错了什么?