0

我是 Python 初学者。我想从字符串中找到 <(.+?)> ,并将其替换为 [\1]。例如,

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

我试过了,

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

但它失败了。

4

4 回答 4

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]'
于 2013-01-31T12:19:34.763 回答
1
>>> re.sub('<(.+)>', '[\\1]', '<age>')
'[age]'

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

您可以像这样使用多个捕获组:

>>> re.sub('<(.+)=+(.*)>', '[\\1: \\2]', '<age=5>')
'[age: 5]'
于 2013-01-31T12:18:46.157 回答
0
re.sub("<([^>]+)>", "[\g<1>]", s)
于 2013-01-31T12:20:41.610 回答
0

正如亚历克斯 L 所说,但你不需要 ? 特点:

import re
re.sub('<(.+)>', '[\\1]', '<age>')
于 2013-01-31T12:21:38.287 回答