1

因此,我正在尝试进行字符串替换,并且正在发生一些我不希望发生的事情,并想看看是否有人可以对此有所了解。

我正在尝试在替换 '| 的地方进行正则表达式替换 ' 如果它存在。我正在使用组匹配和问号来完成它,但由于某种原因,它也只替换了空格。

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

但是当我用 carret 替换空间时,我得到:

$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

根据评论,您应该使用反斜杠转义管道:\|

|管道)是正则表达式中的一个特殊字符,意思是“或”,因此您的正则表达式在第一个匹配“无”或“空格”,而^在第二个匹配则不匹配或插入符号。

于 2013-08-15T21:34:06.910 回答