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

如何用Python正则表达式替换非字母数字包围的sid为tempvalue

Python正则实现特定sid替换需求

要实现只替换被非字母数字符号包围的sid为tempvalue,可以通过正则表达式的负向断言精准匹配目标内容,具体实现如下:

正则表达式解析

使用正则模式 (?<![a-zA-Z0-9])sid(?![a-zA-Z0-9]),各部分作用:

  • (?<![a-zA-Z0-9]):负向回溯断言,确保sid的前一个字符不是字母或数字
  • sid:匹配目标字符串
  • (?![a-zA-Z0-9]):负向先行断言,确保sid的后一个字符不是字母或数字

该模式会自动排除psid这类sid前后连接字母/数字的情况,只替换符合要求的目标。

完整代码示例

import re

lines = [
 "VAR0=sid_host1; -",
 "VAR1=sid; -",
 "VAR2=psid; -",
 "VAR3=sid_host1; -",
 "VAR4=psid_host2; -",
 "VAR5 = (file=/dir1/sid_host1/sid/trace/alert_sid.log)(database=sid)"
]

# 定义替换规则
pattern = r'(?<![a-zA-Z0-9])sid(?![a-zA-Z0-9])'
replaced_lines = [re.sub(pattern, 'tempvalue', line) for line in lines]

# 输出替换后的结果
for line in replaced_lines:
    print(repr(line))

运行结果

"VAR0=tempvalue_host1; -"
"VAR1=tempvalue; -"
"VAR2=psid; -"
"VAR3=tempvalue_host1; -"
"VAR4=psid_host2; -"
"VAR5 = (file=/dir1/tempvalue_host1/tempvalue/trace/alert_tempvalue.log)(database=tempvalue)"

替换效果完全符合预期:仅修改被非字母数字包围的sid,其他包含sid但不符合条件的内容保持不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:19:56