3

私は次のことをしようとしています reg_ex 専門家が周りに光を当てることを願っています。コード内の文字 [ を置き換えて { にする必要があります。しかし、 [ を [ のままにし、変更しない必要がある場合があります。だから私がそれを考え出した方法は、私が使用する必要があるということです

preg_replace("[", "{", $string);

関数は、使用するエスケープ文字が前にない [ 文字を返す適切な正規表現を使用します。では、この「[」ではなく、この「[」を置き換えるにはどうすればよいですか?

事前にどうもありがとう

4

2 に答える 2

4

あなたはこれを行うことができます、そしてそれはコンベンションコールの否定的な後読みアサーションを使っています

echo preg_replace( "/(?<!\\\\)\\[/", '{', "\[ [ [ \[ [" );

基本的には「\が前にない場合のみ[を{に置き換えてください」

于 2009-09-03T17:09:42.803 に答える
1

完全を期すために:

正規表現エンジンが原始的で、否定的な後読みを行う方法がわからない場合は、これを行う別の方法があります(PHP の場合はそうではありません)。

$str = preg_replace( "/(^|[^\\\\])\\[/", '$1{', $str );

これは、^(開始) または[^\](非スラッシュ) に制限されている先行文字をキャプチャし、置換を介して渡します。

于 2009-09-03T17:40:03.893 に答える