私は例えば、タグのプロパティのものを除いて一致する引用符をエスケープしたい:エスケープマッチング引用符
入力:
xyz <test foo='123 abc' bar="def 456"> f00 'escape me' b4r "me too" but not this </tEsT> blah 'escape " me'
予想される出力:
xyz <test foo='123 abc' bar="def 456"> f00 \'escape me\' b4r \"me too\" but not this </tEsT> blah \'escape " me\'
私は、次のしています正規表現:
$result = preg_replace('/(([\'"])((\\\2|.)*?)\2)/', "\\\\$2$3\\\\$2", $input);
xyz <test foo=\'123 abc\' bar=\"def 456\"> f00 \'escape me\' b4r \"me too\" but not this </tEsT> blah \'escape " me\'
を今、私は前に等号を持っている引用符をマッチングスキップするの背後にある正規表現ゼロ幅の負の外観を使用したい:
$result = preg_replace('/((?<=[^=])([\'"])((\\\2|.)*?)\2)/', "\\\\$2$3\\\\$2", $input);
が、期待通りの結果がまだない返し:
xyz <test foo='123 abc\' bar="def 456"> f00 \'escape me\' b4r "me too" but not this </tEsT> blah \'escape " me'
あなたは私だけではなく、最初の引用符をスキップの私は全体の不要なブロックをスキップすることができますどのようにアドバイス(=「何とか何とか何とか」)をお願いできますか?
正規表現ではこれを行わないでください。あなたはそれを後悔します。 – Jon