コマンド ラインから perl regex 操作を使用して (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 では失敗します。私は何を間違っていますか?