如何在Python 3中用捕获组替换一些字符串?

时间:2013-01-31 12:14:55

标签: python regex

我是Python的初学者。 我想找到<(。+?)>从一个字符串,并用[\ 1]替换它。 例如,

string_input = '<age>'
string_output = '[age]'

我试过了,

import re
string = '<age>'
re.sub('<.+?>, '[' + \1 + ']', string)

但它失败了。

4 个答案:

答案 0 :(得分:1)

>>> re.sub('<(.+)>', '[\\1]', '<age>')
'[age]'

Double \\用于转发\,否则\1将被识别为\x01
括号()用作捕获组。

您可以使用多个捕获组:

>>> re.sub('<(.+)=+(.*)>', '[\\1: \\2]', '<age=5>')
'[age: 5]'

答案 1 :(得分:1)

您最好使用\g<>访问捕获组,因此,由于您只有一个捕获组,因此使用\g<1>

In [1]: re.sub(r'<(.+?)>', '[\g<1>]', '<age>')
Out[1]: '[age]'

使用\g<>的优点是您还可以为捕获组指定名称,然后再按名称访问它们,例如:

In [2]: re.sub(r'<(?P<content>.+?)>', '[\g<content>]', '<age>')
Out[2]: '[age]'

答案 2 :(得分:0)

re.sub("<([^>]+)>", "[\g<1>]", s)

答案 3 :(得分:0)

正如Alex L所说,但你不需要?字符:

import re
re.sub('<(.+)>', '[\\1]', '<age>')