首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >替换字符串中的字符,如果只有上一个或下一个字符不包含相同的字符

替换字符串中的字符,如果只有上一个或下一个字符不包含相同的字符
EN

Stack Overflow用户
提问于 2018-02-26 12:44:43
回答 4查看 1.4K关注 0票数 3

我有一套这样的绳子:

代码语言:javascript
运行
复制
$string1 = 'man_city/man_united'; //it will  be replaced
$string2 = 'liverpool///arsenal'; //it will not be replaced
$string3 = 'chelsea//spurs'; //it will  not be replaced
$string4 = 'leicester/sunderland'; //it will be replaced

我想用'/‘替换字符串中的'/’字符,但前提是'/‘字符中的下一个字符或前一个字符也不包含'/’。

如果我像这样使用str_replace,它将无法工作:

代码语言:javascript
运行
复制
$name1 = str_replace("/","\/",$string1);
$name2 = str_replace("/","\/",$string2);
...
//output
$name1 = 'man_city\/man_united';
$name2 = 'liverpool\/\/\/arsenal';
...
//desired output
$name1 = 'man_city\/man_united';
$name2 = 'liverpool///arsenal';
...
EN

Stack Overflow用户

回答已采纳

发布于 2018-02-26 12:49:53

你可以用

代码语言:javascript
运行
复制
'~(?<!/)/(?!/)~'

regex演示

如果在(?<!/)之前有/,则/负查找将导致匹配失败,如果在/之后有/,则(?!/)负查找将导致匹配失败。

PHP演示

代码语言:javascript
运行
复制
$re = '~(?<!/)/(?!/)~';
$str = "man_city/man_united\nliverpool///arsenal\nchelsea//spurs\nleicester/sunderland";
$result = preg_replace($re, "\\/", $str);
echo $result;

输出:

代码语言:javascript
运行
复制
man_city\/man_united
liverpool///arsenal
chelsea//spurs
leicester\/sunderland
票数 4
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48988819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档