0

I have the following text (just an example): </i>5 <i></i><span class

I'd like to remove this space, so I tried:

re.sub(r'</i>.* <i></i><span class', '</i>%02d<i></i><span class' %, text)

But this did not work. How can I catch the "thing" which is found in ".*"? %02d is obviously incorrect...

Thanks for the help :)

4

2 回答 2

1

您可以使用捕获组:

re.sub(r'</i>(.*) <i></i><span class', r'</i>\1<i></i><span class', text)

此捕获组(.*)捕获“5”,并将其放置在\1替换文本中。注意在r第二个字符串之前的存在:它告诉 Python 这是一个原始字符串(有关更多详细信息,请参见此处

于 2013-09-06T02:35:09.097 回答
0

正如大卫所说,你需要一个捕获组。进一步阐述:

圆括号捕获它们匹配的任何内容。这称为“捕获组”,并为捕获的任何内容创建“反向引用”。每个后续的反向引用都可以由 \1 引用。所以:

(.)b\1

匹配“aba”和“mnm”,但不匹配“abc”。

相似地,

(.)(.)b\1\2

匹配“abbab”、“xybxy”

(.)(.)b\2\1

匹配 'abbba'、'xybyx'

然后可以使用它来检查回文(不是建议,正则表达式不能匹配未指定长度限制的回文):

(.?)(.)(.)\3?\2\1

是一个正则表达式,它将匹配长度为 3 或更短的回文。

于 2013-09-06T03:15:54.600 回答