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

Python正则表达式:如何仅替换文本前的#号(排除花括号内)

解决方案:替换不在花括号内的#号

要实现只替换不在{{}}包裹中的#号、保留花括号内的#,可以用正则表达式的负向断言精准匹配目标字符。

正则表达式

(?<!{{)#(?!}})

正则规则解释

  • (?<!{{):负向回顾后发断言——检查当前#号的前面不是{{,直接排除{{#}}这类花括号内的#
  • #:匹配需要替换的目标#号
  • (?!}}):负向前瞻断言——检查当前#号的后面不是}},进一步确保这个#不在花括号的闭合结构里

代码示例

Python

import re

original_str = "test string {{#}}, {{#}} , #<any text>"
result = re.sub(r'(?<!{{)#(?!}})', '', original_str)
print(result)
# 输出: test string {{#}}, {{#}} , <any text>

JavaScript

const originalStr = "test string {{#}}, {{#}} , #<any text>";
const result = originalStr.replace(/(?<!{{)#(?!}})/g, '');
console.log(result);
// 输出: test string {{#}}, {{#}} , <any text>

针对性补充

如果你的场景只需要替换例子中逗号空格后的特定#号,可以用更精准的正则:

(?<=, )#

这个正则通过(?<=, )断言#号前是, ,只会匹配目标位置的#,不会影响其他可能存在的非花括号内#号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 15:45:56