如果没有反斜杠,则替换字符

时间:2013-06-30 21:27:41

标签: php regex preg-replace backslash

假设你在PHP中有一个字符串

$string = 'Hello \world, how a\re you?';

如果没有反斜杠,我想替换所有w和r。我假设preg_replace是要走的路,但是我不太了解正则表达式来完成这项工作:

  

$ newString = preg_replace(array(' / ???? /',' / ???? /'),数组('!&# 39;,'!'),$ string);

如果它按照我的意愿工作,输出应为

  

echo $ newString; //输出:' Hello \ wo!ld,ho!你好吗?'

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

你可以使用负面的后卫:

preg_replace('/(?<!\\\\)[wr]/', '!', $string);

答案 1 :(得分:3)

您可以使用negative look-behind

/(?<!\\)[wr]/

如代码所示:

preg_replace('/(?<!\\\\)[wr]/', '!', $string);