首页 > 解决方案 > 修改后用匹配替换python中的子字符串

问题描述

我正在尝试在python中将python中的子字符串替换为修改后的匹配项。我有#ma{Z} 并希望用#maZ 替换它。

re.sub(t=r'\#\{\w\}',t - 1 , line)

谢谢你。

标签: pythonregex

解决方案


你不需要正则表达式,用空字符串str.replace替换{}就可以了:

In [855]: str_ = '#ma{Z}'

In [856]: str_.replace('{', '').replace('}', '')
Out[856]: '#maZ'

如果您坚持使用正则表达式,请为{and使用字符类},然后再次替换为空字符串:

In [857]: re.sub(r'[{}]', '', str_)
Out[857]: '#maZ'

根据评论编辑:

由于您实际上想要删除 in 周围的大括号Q{<math>\\mathbb{Q}}您可以使用\w+匹配一个或多个字母数字或下划线并将匹配项放在捕获的组中以在替换中引用它re.sub

In [858]: str_ = '{<math>\\mathbb{Q}}'

In [859]: re.sub(r'\{(\w+)\}', r'\1', str_)
Out[859]: '{<math>\\mathbbQ}'

推荐阅读