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

如何仅提取字符串末尾恰好三个连续的大写英文字母?

正则匹配问题:仅提取末尾恰好三个连续大写字母的部分

需求

仅当字符串末尾为恰好三个连续大写英文字母时提取该部分,否则返回"NONE"。

测试用例

a = "aaaAAA"
b = "bbbbBBB"
c = "ccc CCC"
d = "dddddDDD"
e = "eeeEEEE"

当前Python函数

import re

def get_three(value):
    search = re.search("[A-Z]{3}$", value)
    
    if search:
        return search.group(0)
 
    return "NONE"

当前返回结果

AAA
BBB
CCC
DDD
EEE

期望返回结果

AAA
BBB
CCC
DDD
NONE

问题原因

原正则[A-Z]{3}$仅匹配末尾的三个大写字母,但无法区分末尾是恰好三个还是更多。比如变量e的末尾是四个大写字母EEEE,原正则会匹配最后三个EEE,导致错误返回。

修正方案

使用负向后行断言(?<![A-Z])确保三个大写字母的前一个字符不是大写字母,这样就能保证末尾是恰好三个连续大写字母。修正后的函数如下:

import re

def get_three(value):
    # 负向后行断言:确保三个大写字母前不是大写字母
    search = re.search(r"(?<![A-Z])[A-Z]{3}$", value)
    
    if search:
        return search.group(0)
 
    return "NONE"

运行修正后的函数,即可得到符合期望的返回结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:31:19