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

如何替换方括号后首个小数点前的内容且保留括号和小数点?

方括号内指定位置数字替换方案

原代码错误原因

你使用的正则 *\[.*?\. * 存在两处问题:

  • 匹配范围包含了左方括号[本身,替换时直接将[和目标数字一同替换为80,导致方括号丢失
  • 匹配内容包含了第一个小数点,替换后小数点消失,原70.00部分就变成了错误的8000

正确实现方案

推荐使用零宽断言实现,不需要额外处理保留字符,逻辑更直观:

正则规则

使用正则(?<=\[)\d+(?=\.),规则解释:

  • (?<=\[):正向零宽后行断言,匹配位置的前面必须是左方括号[,不会将[纳入匹配内容
  • \d+:匹配1个及以上数字,即你需要替换的70部分
  • (?=\.):正向零宽先行断言,匹配位置的后面必须是小数点.,不会将.纳入匹配内容

不同语言示例

PHP示例

// 无空格版本,输入为filter[xxx]格式
echo preg_replace('/(?<=\[)\d+(?=\.)/', '80', 'filter[70.00-100.00]');
// 兼容方括号前带空格版本,输入为filter [xxx]格式
echo preg_replace('/(?<=\[ *)\d+(?=\.)/', '80', 'filter [70.00-140.00]');

Python示例

import re
# 无空格版本
print(re.sub(r'(?<=\[)\d+(?=\.)', '80', 'filter[70.00-100.00]'))
# 兼容方括号前带空格版本
print(re.sub(r'(?<=\[ *)\d+(?=\.)', '80', 'filter [70.00-140.00]'))

运行效果

输入filter[70.00-100.00] 输出结果为filter[80.00-100.00],完全符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:36:02