mystr = """{abc} [abc] (abc) ['abc'] ["abc"]"""
pattern = r'\babc\b'
mystr = re.sub(pattern, "nnn", mystr)
print(mystr)
# {nnn} [nnn] (nnn) ['nnn'] ["nnn"]

但是,我希望返回{nnn}[nnn](nnn)[abc'][abc]

如何忽略单引号或双引号?

推荐答案

您可以使用一个正则表达式模式,该模式在大括号、方括号或圆括号中仅针对abc个:

mystr = """{abc} [abc] (abc) ['abc'] ["abc"]"""
output = re.sub(r'([{(\[])abc([})\]])', r'\1nnn\2', mystr)
print(output)  # {nnn} [nnn] (nnn) ['abc'] ["abc"]

对于只针对引用了not的元素的更通用的解决方案,请使用re.sub和回调函数:

mystr = """{abc} [abc] (abc) ['abc'] ["abc"]"""
output = re.sub(r'([{(\[])(.*?)([})\]])', lambda m: m.group(1) + 'nnn' + m.group(3) if not re.search(r"^['\"].*['\"]$", m.group(2)) else m.group(), mystr)
print(output)  # {nnn} [nnn] (nnn) ['abc'] ["abc"]

Python相关问答推荐

对整个 pyramid 进行分组与对 pyramid 列子集进行分组

如何在python xsModel库中定义一个可选[December]字段,以产生受约束的SON模式

如何在Python中并行化以下搜索?

pyscript中的压痕问题

将tdqm与cx.Oracle查询集成

有没有一种方法可以从python的pussompy比较结果中提取文本?

关于Python异步编程的问题和使用await/await def关键字

Python导入某些库时非法指令(核心转储)(beautifulsoup4."" yfinance)

Python Pandas—时间序列—时间戳缺失时间精确在00:00

如何将数据帧中的timedelta转换为datetime

如何在SQLAlchemy + Alembic中定义一个"Index()",在基表中的列上

我怎么才能用拉夫分拣呢?

对数据帧进行分组,并按组间等概率抽样n行

在Pandas 中以十六进制显示/打印列?

如何在基于时间的数据帧中添加计算值

Groupby并在组内比较单独行上的两个时间戳

如何让PYTHON上的Selify连接到现有的Firefox实例-我无法连接到Marionette端口

更新包含整数范围的列表中的第一个元素

为什么在安装了64位Python的64位Windows 10上以32位运行?

如何计算二十面体每条三角形边的中点