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

Python正则实现:删除含≥5个大写字母子串及?到:的字符串片段

问题背景

现有存储字符串元素的Python列表,需要通过正则实现两类字符串处理规则:

  • 规则1:移除所有包含至少5个大写英文字母的连续路径段(段间以//?/:为分隔边界)
  • 规则2:移除字符串中从?字符开始、到:字符前的所有内容

给定输入输出示例:

输入列表:
['helLo/aPPle/BuTTeRfLY:Missed','bliss/ScIENCEs/brew?Dyna=skjdk:Nest','Self/NESTeDsd/hello/MiSSInG:Good']

输出列表:
['helLo/aPPle/:Missed','bliss//brew:Nest','Self//hello/:Good']

正则表达式设计

两个处理规则对应两个正则模式,按顺序替换即可:

  1. 匹配含至少5个大写字母的路径段:r'[^/?:]*(?:[A-Z][^/?:]*){5,}'
    • 逻辑说明:[^/?:]*匹配非分隔符(//?/:)的任意字符,(?:[A-Z][^/?:]*){5,}匹配至少5次「单个大写字母+后续非分隔符字符」组合,精准定位大写数量≥5的整段内容,替换为空字符串即可完成移除。
  2. 匹配?到:前的所有内容:r'\?[^:]*'
    • 逻辑说明:匹配以?开头、后续连续任意个非:字符的内容,替换为空字符串即可完成该段移除,保留结尾的:字符。
Python实现代码
import re

# 预编译正则模式提升执行效率
pattern_upper = re.compile(r'[^/?:]*(?:[A-Z][^/?:]*){5,}')
pattern_question = re.compile(r'\?[^:]*')

def process_string_list(input_list):
    result = []
    for s in input_list:
        # 第一步:移除含至少5个大写字母的路径段
        processed = pattern_upper.sub('', s)
        # 第二步:移除?到:之间的所有内容
        processed = pattern_question.sub('', processed)
        result.append(processed)
    return result

# 示例测试
if __name__ == "__main__":
    input_list = [
        'helLo/aPPle/BuTTeRfLY:Missed',
        'bliss/ScIENCEs/brew?Dyna=skjdk:Nest',
        'Self/NESTeDsd/hello/MiSSInG:Good'
    ]
    output_list = process_string_list(input_list)
    print(output_list)
    # 运行输出与示例完全一致:['helLo/aPPle/:Missed', 'bliss//brew:Nest', 'Self//hello/:Good']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:18:25