修改后将python中的子字符串替换为匹配

时间:2018-08-11 23:09:47

标签: python regex

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

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

谢谢。

2 个答案:

答案 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]或指定一个范围来捕获大括号{}之间的组中的那些并替换为捕获组:

{([EQZ])}

import re
line = "#ma{Z}"
result = re.sub(r"{([EQZ])}", r"\1", line)

if result:
    print (result)

Demo