文件:
C:\Some\Location\index
我只想用\ example
替换\ indexecho preg_replace('/[\\\|\/]{1}.*?$/', '\example', $file);
它只是太贪心了。我不知道任何可以帮助解决这个问题的修饰语。
谢谢!
答案 0 :(得分:4)
echo preg_replace('/[\\\|\/]{1}[^\\\/]*?$/', '\example', $file);
怎么样?
答案 1 :(得分:3)
将.
替换为[^/\]
,其中除了斜杠之外的任何内容都匹配。我还将正则表达式分隔符更改为@
,因为在处理路径时斜杠不合适。
$str='C:\\Some\\Location\\index';
echo preg_replace('@[/\\\\][^/\\\\]+$@', '\example', $str);
# echoes: C:\Some\Location\example
答案 2 :(得分:2)
如果你可以使用正斜杠而不是那些丑陋的反斜杠(是的,windows 支持支持正斜杠),你不需要正则表达式:
$str = 'C:/Some/Location/index';
echo dirname($str).'/example';
答案 3 :(得分:1)
preg_replace( '/(^.*?)\\([^\\]+)$/', '$1\\example', $file );
$path = explode( '\\', $file );
array_splice( $path, -1, 1, 'example' )
$file = implode( '\\', $path );
答案 4 :(得分:1)
如果你坚持使用正则表达式,
echo preg_replace('/[^\/\\]*$/', 'example', $file)
会做的。
我建议使用
echo dirname($file).'\example'
而是,它将安全地处理前向和反斜杠,根目录等。