如何用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
相关产品推荐
相关产品推荐

