我有以下文字(只是一个例子):</i>5 <i></i><span class
我想删除这个空间,所以我尝试了:
re.sub(r'</i>.* <i></i><span class', '</i>%02d<i></i><span class' %, text)
但是这没用。如何捕捉“.*
”中的“东西”? %02d
显然不正确......
感谢您的帮助:)
答案 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或更短的回文相匹配。