我有一个字符串,其中每个标记的子字符串都在 < 中和 > 必须颠倒(括号不嵌套)。例如,
"hello <wolfrevokcats>, how <t uoy era>oday?"
应该变成
"hello stackoverflow, how are you today?"
我目前的想法是遍历字符串并找到索引对 其中 <和 >是。然后只需将字符串切片并放入切片 再次与标记之间的所有内容一起反转。 这是正确的方法吗?是否有明显/更好的解决方案?
请您参考如下方法:
使用正则表达式非常简单。 re.sub将函数作为匹配对象传递给的参数。
>>> 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?'
正则表达式的解释:
<(.*?)>将匹配 < 之间的所有内容和 >在匹配组 1 中。确保正则表达式引擎将在第一个 > 处停止符号出现,惰性量词 *?被使用。
函数lambda m: m.group(1)[::-1]传递给 re.sub获取匹配对象,提取第 1 组,并反转字符串。最后re.sub插入此返回值。
