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

Php 如果前面没有反斜杠,则替换字符,php,regex,preg-replace,backslash,Php,Regex,Preg Replace,Backslash,假设PHP中有一个字符串 $string = 'Hello \world, how a\re you?'; 如果前面没有反斜杠,我想替换所有的w和r。我认为preg_replace是一条可行之路,但我对regex了解不够,无法实现这一点: $newString=preg_replace(数组(“/?”、“/?”)、数组(“!”、“!”)、$string) 如果它像我希望的那样工作,那么输出应该是 echo$newString;//输出:'你好\wo!哎哟!!a你是谁?” 感谢您在这方面的帮助。

假设PHP中有一个字符串

$string = 'Hello \world, how a\re you?';
如果前面没有反斜杠,我想替换所有的w和r。我认为preg_replace是一条可行之路,但我对regex了解不够,无法实现这一点:

$newString=preg_replace(数组(“/?”、“/?”)、数组(“!”、“!”)、$string)

如果它像我希望的那样工作,那么输出应该是

echo$newString;//输出:'你好\wo!哎哟!!a你是谁?”


感谢您在这方面的帮助。

您可以使用负片后视:

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

preg_replace('/(?您可以使用负片后视:

preg_replace('/(?<!\\\\)[wr]/', '!', $string);
preg_replace('/(?您可以为此使用:

/(?<!\\)[wr]/
/(?
如守则所述:

preg_replace('/(?<!\\\\)[wr]/', '!', $string);
preg_replace('/(?您可以为此使用:

/(?<!\\)[wr]/
/(?
如守则所述:

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

preg_replace('/(?在php中,建议使用4个反斜杠谢谢你。我知道如果你真的统治regex很容易。但我在互联网上还没有找到这样的例子。:)在php中,建议使用4个反斜杠谢谢你。我知道如果你真的统治regex很容易。但我在互联网上还找不到这样的例子。:)在php中,建议使用4backslashes@HamZa是的,当发布正则表达式模式时,我们更喜欢只根据需要转义该模式,并排除该语言所需的任何其他转义backslashes@HamZa是的,当发布正则表达式模式时,您更愿意根据需要转义该模式,并排除任何其他esc语言所要求的模仿。