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

PHP中如何用正则匹配被$包裹的词汇并替换为双$包裹的形式

解决方案

你可以用带捕获组的正则匹配实现替换,PHP下正确写法如下:

// 适用场景:$包裹内容不含空白
preg_replace('/\$(\S+?)\$/', '\$\$$1\$\$', $text);

// 如果$包裹内容允许包含空白,用以下写法
preg_replace('/\$(.+?)\$/', '\$\$$1\$\$', $text);

// 替换参数用单引号包裹时可以简化写法:
preg_replace('/\$(\S+?)\$/', '$$$1$$', $text);

代码说明

  • 正则里的()是捕获组,会把两个$中间匹配到的内容存入$1变量
  • 双引号包裹替换参数时,\$是转义后的字面量$,\$\$$1\$\$拼接后就是$$ + 捕获到的原内容 + $$
  • 非贪婪匹配符?用于避免多个$对出现时匹配范围过大的问题

测试示例

$text = "The \$girl\$ is a \$good\$ person";
$result = preg_replace('/\$(\S+?)\$/', '\$\$$1\$\$', $text);
echo $result;
// 输出结果:The $$girl$$ is a $$good$$ person

内容的提问来源于stack exchange,提问作者Daenny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:45:09