You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP正则替换问题:小写接大写字母前插<br>丢失匹配字符

解决在小写字母后大写字母前插入<br>且保留原字符的问题

嘿,我懂你现在的困扰——你的正则替换把匹配到的小写和大写字母都给替换没了,导致原文本缺了字符对吧?这是因为你在替换的时候没有保留捕获到的内容,直接用<br>覆盖了匹配到的两个字符。

修正后的代码

$str = "Rating: goodHelps control sebum production Rating: averagePrevents the development of microorganisms in cosmetics Rating: badCan be allergenic Rating: badToxic to cell division";
$string = preg_replace('/([a-z])([A-Z])/', '$1<br>$2', $str);
print_r($string);

为什么原来的代码不行?

你原来的替换规则是preg_replace('/([a-z])([A-Z])/', "<br>", $str),这里的正则表达式确实匹配到了“小写字母+大写字母”的组合,但替换的时候直接用<br>替换了这两个字符,所以原字符就丢失了。

修正的核心逻辑

正则里的([a-z])和([A-Z])是两个捕获组,分别对应匹配到的小写字母和大写字母。在替换字符串里用$1引用第一个捕获组的内容,$2引用第二个捕获组的内容,这样就能保留原字符,同时在中间插入<br>标签。

运行结果

修正后输出的内容会变成:

Rating: good
Helps control sebum production Rating: average
Prevents the development of microorganisms in cosmetics Rating: bad
Can be allergenic Rating: bad
Toxic to cell division

这样就完美保留了所有原文本,同时在需要的位置插入了换行标签~

内容的提问来源于stack exchange,提问作者Alper Köse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 06:35:09