wp231957 发表于 2024-8-20 11:11:01

正则替换

A=["sheet1!a2:a5","sheet1!a3:d5","sheet1"]

把sheet1 替换成sheet2但是 前面有中括号的 不替换   使用正则

isdkz 发表于 2024-8-20 15:30:31

import re

pattern = re.compile(r"(?<!\])sheet1")
A=["sheet1!a2:a5","sheet1!a3:d5","sheet1"]
res = list(map(lambda x: pattern.sub("sheet2", x), A))

print(res)

allen-xy 发表于 2024-8-20 17:09:39

使用反向否定预查,查找关键字时,判断左侧是否不为某字符。如果不是,匹配。如果是,不匹配。

import re

str_1 = 'A=["sheet1!a2:a5","sheet1!a3:d5","sheet1"]'
str_2 = re.sub(r'(?<!\])sheet1', r'sheet2', str_1, flags=re.IGNORECASE)
print(str_2)

wp231957 发表于 2024-8-21 09:06:44

isdkz 发表于 2024-8-20 15:30


(?<!\])   这里为什么要添加小括号呢小括号不是表示分组吗

isdkz 发表于 2024-8-21 16:22:52

wp231957 发表于 2024-8-21 09:06
(?

断言也是要用括号的,括号里面以 ? 开头的有特殊作用,例如 ?: 表示不捕获分组,?= 、?! 、?<=、?<! 都是断言

这些断言又分别是 前向、负向 与 肯定、否定的组合,你可以去了解一下断言
页: [1]
查看完整版本: 正则替换