1

だから私は文字列の交換をしようとしていますが、私が起こるとは思っていなかった何かが起こっていて、誰かがそれに光を当てることができるかどうかを見たいと思っていました.

'| を置き換える正規表現置換を実行しようとしています。' 存在する場合。グループ マッチングとクエスチョン マークを使用してそれを実行していますが、何らかの理由でスペースだけを置き換えています。

$str = 'x x';
$str = preg_replace('/(| )?/','',$str);
echo $str; // Echoes out 'xx' whereas it should return 'x x'

しかし、スペースをキャレットに置き換えると、次のようになります。

$str = 'x^x';
$str = preg_replace('/(|^)?/','',$str);
echo $str; // Echoes out 'x^x' as expected

私が覚えていない特別なスペースがありますか? それともこれでうまくいくのでしょうか?

私は次のことを試しました:

$str = preg_replace('/(|\s)?/','',$str);
$str = preg_replace('/(|[ ])?/','',$str);

また、どちらも不正確な結果を出しています。考え?

4

1 に答える 1

0

ああ、あなたが私を待っていたとは知りませんでした xD

コメントに従って、バックスラッシュでパイプをエスケープする必要があります: \|

|パイプ)は正規表現の特殊文字であり、「または」を意味するため、正規表現は最初のものでは「何もない」または「スペース」のいずれかと一致^し、2番目のものでは何もまたはキャレットと一致しませんでした。

于 2013-08-15T21:34:06.910 に答える