You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则捕获组大小写转换方法及Python re.sub场景实现

嘿,我来帮你搞定这两个正则表达式的大小写转换问题~

问题1:如何将正则表达式捕获的小写组转换为大写?

在Python的re模块里,直接用替换字符串没法直接实现大小写转换,最灵活可靠的方式是配合回调函数使用re.sub。你可以定义一个函数,接收匹配对象作为参数,对捕获到的组调用upper()方法,再返回处理后的结果。

举个实际的例子:

import re

text = "这是一个(test),还有另一个(demo)"
def cap_group(match):
    # 取出第一个捕获组,转成大写后返回
    return match.group(1).upper()

processed_text = re.sub(r'\(([a-z]+)\)', cap_group, text)
print(processed_text)  # 输出:这是一个(TEST),还有另一个(DEMO)

问题2:在re.sub生成链接时,将第二个捕获组从大写转小写

你的场景里,源文本的第二个捕获组是大写,但链接需要小写,同样用回调函数就能轻松解决。不用再依赖\1、\2这种固定替换语法,而是手动处理每个捕获组的格式:

import re

def build_link(match):
    # 获取两个捕获组,第二个转小写
    first_grp = match.group(1)
    second_grp_lower = match.group(2).lower()
    # 拼接成需要的链接格式,这里假设链接显示文本是原匹配的内容,可按需调整
    return f'<a href="www.bla.com/{first_grp}/{second_grp_lower}">{match.group(0)}</a>'

# 测试用例
source_str = "firstpartHelloWORLD"
result = re.sub(r'firstpart([A-Za-z]+)([A-Z]+)', build_link, source_str)
print(result)
# 输出:<a href="www.bla.com/Hello/world">firstpartHelloWORLD</a>

简单说下原理:re.sub会把每个匹配到的内容传给回调函数,你可以在函数里对捕获组做任何自定义处理(比如大小写转换、字符串拼接等),最后返回想要的替换结果,比固定的替换字符串灵活太多啦~

内容的提问来源于stack exchange,提问作者Pjoern

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:30:04