在python中,正则表达式替换字符串但保持大小写的最佳方法是什么?

2024-10-06 11:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在python中替换一个字符串的实例,但保留它们原来的大小写。在

例如,假设我将字符串“鸡蛋”替换为“香蕉”:

{cd2>{cd2}

Eggs are good for breakfast.-->;Bananas are good for breakfast.

I'M YELLING ABOUT EGGS!-->;I'M YELLING ABOUT BANANAS!

现在,我做一个重新编译还有,sub,但是如果每次都不显式地声明这三个变量,我就不能想出一个聪明的方法。我要替换大约100多个单词,所以我想应该有一个更聪明、更像Python的方法。在

编辑:这不是之前问题的重复。-->;一些不同之处:我用一个完全不同的单词替换这个单词,而不是用标签包装它。另外,我需要保留这个箱子,即使它全是盖子,等等。。请不要在没有充分阅读问题的情况下标记为重复。在


Tags: 实例方法字符串gtfor单词鸡蛋eggs
1条回答
网友
1楼 · 发布于 2024-10-06 11:21:48

这里的关键之处在于,您可以向^{}传递一个函数,以便在确定给定匹配项的正确替换之前进行各种检查。另外,使用re.I标志来获取所有事例。在

import re
def replace_keep_case(word, replacement, text):
    def func(match):
        g = match.group()
        if g.islower(): return replacement.lower()
        if g.istitle(): return replacement.title()
        if g.isupper(): return replacement.upper()
        return replacement      
    return re.sub(word, func, text, flags=re.I)
    # return re.compile(word, re.I).sub(func, text) # prior to Python 2.7

示例:

^{pr2}$

相关问题 更多 >