Python:查找并打印上一个元素

时间:2013-09-06 02:31:15

标签: python regex

我有以下文字(只是一个例子):</i>5 <i></i><span class

我想删除这个空间,所以我尝试了:

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

但是这没用。如何捕捉“.*”中的“东西”? %02d显然不正确......

感谢您的帮助:)

2 个答案:

答案 0 :(得分:1)

您可以使用捕获组:

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

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

答案 1 :(得分:0)

正如大卫所说,捕捉群体就是你所需要的。进一步阐述:

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

(.)b\1

匹配&#39; aba&#39;和&#39; mnm&#39;,但不是&#39; abc&#39;。

同样,

(.)(.)b\1\2

匹配&ab;&#39; xybxy&#39;

(.)(.)b\2\1

匹配&#39; abbba&#39;,&#39; xybyx&#39;

然后可以用它来检查回文(不是建议的,regex's cannot match palindromes of unspecified length limits):

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

是一个正则数,它与长度为3或更短的回文相匹配。