2
2番目の出力が(?!B)
の条件を無視し、20 x 1B
の代わりに201B
を返す理由を理解できませんか?Regexは2番目の先読みを無視します
私のPHPコード:
$s_1 = '20 x 1';
$s_2 = '20 x 1B';
$pattern = '/(?<=\d)[\s]*[xX][\s]*(?=\d)(?!B)/ui';
echo preg_replace($pattern, '', $s_1); // output: 201
echo preg_replace($pattern, '', $s_2); // output: 201B
これはPHPのコンテキストでですか?それに応じてタグ付けする必要があります。正規表現は実装ごとに根本的に異なる場合があります。 – tadman
期待される出力は何ですか? "無視する"(?!B) '"とはどういう意味ですか? –
はい、PHPです。期待される出力は '20 x 1B'です – user451555