>>> import re
s = 'hello <wolfrevokcats>, how <t uoy era>oday?'
>>> re.sub(r"<(.*?)>", lambda match: match.group(1)[::-1], s)
'hello stackoverflow, how are you today?'
>>> import re
>>> s = 'hello <wolfrevokcats>, how <t uoy era>oday?'
>>> re.sub('<(.*?)>', lambda m: m.group(1)[::-1], s)
'hello stackoverflow, how are you today?'
我假设这是一个课程作业,不允许使用正则表达式。所以我要提供一个不使用它的解决方案。在
这段代码的要点是在字符串中一次只传递一个字符。当在括号外时,只需在结果字符串的末尾附加字符。在括号内时,将字符插入左括号的位置(即预挂字符)。在
或者,使用^{} 和一个替换函数:
其中
.*?
将以non-greedy方式匹配任意数量的任何字符。它周围的括号可以帮助我们将它捕获到group中,然后在替换函数-match.group(1)
中引用它。[::-1]
切片表示法reverses a string。在正则表达式非常简单。
re.sub
将函数作为匹配对象传递给的参数。在正则表达式说明:
<(.*?)>
将匹配匹配匹配组1中<
和{>
符号出现时停止,使用了惰性量词*?
。在传递给
re.sub
的函数lambda m: m.group(1)[::-1]
获取匹配对象,提取组1,并反转字符串。最后re.sub
插入这个返回值。在相关问题 更多 >
编程相关推荐