php:如何替换不反斜杠的字母

时间:2010-09-08 14:07:54

标签: php regex

嗨我想用“ - ”替换字符串中的所有“e”,它们不是反斜杠 所以“你好”应该是 - > “h-llo”但“h \ ello”应该是“你好”的任何想法,如果这可以用一个正则表达式吗?

2 个答案:

答案 0 :(得分:5)

如果您需要组合两个正则表达式,则无法使用e标志,因为替换是不同的。

preg_replace('/(\\\\?e)/e', "'\\1'=='e'?'-':'e'", $str);

(用法:http://www.ideone.com/S2uiS

虽然没有必要使用正则表达式。 The strtr function能够执行此类替换。

strtr($str, array('\\e' => 'e', 'e' => '-'));

(用法:http://www.ideone.com/yg93g

答案 1 :(得分:3)

你可以使用negative lookbehind来确保e之前的字符不是反斜杠:

$string = preg_replace('/(?<!\\)e/', "-", $string);