我正在python中尝试用修改后的match替换python中的子字符串。 我有#ma {Z},并希望将其替换为#maZ。
re.sub(t=r'\#\{\w\}',t - 1 , line)
谢谢。
答案 0 :(得分:1)
您不需要正则表达式,str.replace
用空字符串替换{
和}
可以做到:
In [855]: str_ = '#ma{Z}'
In [856]: str_.replace('{', '').replace('}', '')
Out[856]: '#maZ'
如果您坚持使用Regex,请为{
和}
使用字符类,然后再次用空字符串替换:
In [857]: re.sub(r'[{}]', '', str_)
Out[857]: '#maZ'
根据评论进行编辑:
由于您实际上要删除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}'
答案 1 :(得分:0)
如果您有Q,Z,E之类的模式,则可以选择使用character class [EQZ]
或指定一个范围来捕获大括号{}
之间的组中的那些并替换为捕获组:
import re
line = "#ma{Z}"
result = re.sub(r"{([EQZ])}", r"\1", line)
if result:
print (result)