求PHP一个正则轮换
程序员文章站
2022-06-17 13:12:30
...
求PHP一个正则替换
要把字符:cjy/dongnanya/flb-mnl/xianlu 替换为cjy/dongnanya-flb-mnl-xianlu
也就是讲把原来的字符除第一个“/”不替换,其它的都替换为“-”
要把字符:cjy/dongnanya/flb-mnl/xianlu 替换为cjy/dongnanya-flb-mnl-xianlu
也就是讲把原来的字符除第一个“/”不替换,其它的都替换为“-”
php
------解决方案--------------------
------解决方案--------------------
(?
(?:匹配“内容2”,同时断言“内容2前面有内容1”,说白了就是匹配“内容2”,但是如果前面没有内容1的话匹配失败,
(.*?)/:尽可能少的匹配字符直到匹配到“/”为止。
整个的含义就是尽可能少的匹配一段字符,这段字符是以“/”结尾,同时断言这段字符前面必须要有一个“/”,才能匹配成功,然后替换成这段字符本身,但是结尾的“/”替换成“-”。
不知是否明白。
------解决方案--------------------
下次回复别人记得要引用的。
(?=)(?)和(?:),这些都不会被记录在捕获内存中的。
括号的用途很多,(?#)我没记错的话是注释。
建议你有时间可以深入一下正则,知识点并不多,一天就能都掌握了,剩下的是自己没事练习一下。
------解决方案--------------------
$s = 'cjy/dongnanya/flb-mnl/xianlu';
//方法一
$t = preg_replace('#/#', '-', $s);
$t = preg_replace('#-#', '/', $t, 1);
echo $t;
//方法二
$n = 0;
echo preg_replace_callback('#/#', 'foo', $s);
function foo($r) {
global $n;
if($n++) return '-';
return $r[0];
}
------解决方案--------------------
(?
(?:匹配“内容2”,同时断言“内容2前面有内容1”,说白了就是匹配“内容2”,但是如果前面没有内容1的话匹配失败,
(.*?)/:尽可能少的匹配字符直到匹配到“/”为止。
整个的含义就是尽可能少的匹配一段字符,这段字符是以“/”结尾,同时断言这段字符前面必须要有一个“/”,才能匹配成功,然后替换成这段字符本身,但是结尾的“/”替换成“-”。
不知是否明白。
------解决方案--------------------
下次回复别人记得要引用的。
(?=)(?)和(?:),这些都不会被记录在捕获内存中的。
括号的用途很多,(?#)我没记错的话是注释。
建议你有时间可以深入一下正则,知识点并不多,一天就能都掌握了,剩下的是自己没事练习一下。
相关文章
相关视频
专题推荐
-
独孤九贱-php全栈开发教程
全栈 170W+
主讲:Peter-Zhu 轻松幽默、简短易学,非常适合PHP学习入门
-
玉女心经-web前端开发教程
入门 80W+
主讲:灭绝师太 由浅入深、明快简洁,非常适合前端学习入门
-
天龙八部-实战开发教程
实战 120W+
主讲:西门大官人 思路清晰、严谨规范,适合有一定web编程基础学习
网友评论
文明上网理性发言,请遵守 新闻评论服务协议
我要评论