You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

正则表达式过滤列表项求助:大小写不敏感处理及代码精简

搞定大小写不敏感的Iteration匹配 + 精简代码方案

嘿,我懂你现在的痛点——之前要写一堆分支处理不同大小写的Iteration,代码又长又难维护,还怕未来出现iTERaTion这种奇奇怪怪的大小写组合对吧?其实用正则的大小写不敏感模式就能一次性解决所有问题,还能顺便完成数字提取和日期转换,代码会清爽很多!

核心技巧:正则的不敏感匹配模式

不用再分别写匹配Iterationiteration的逻辑,直接给正则加上大小写不敏感修饰符,就能覆盖所有大小写变体,不管是全大写、全小写还是混合大小写都能命中。

具体代码实现(以Python为例)

假设你的JSON里有个列表,项的格式比如是"Iteration 2024""iTERaTion 35"这类,看下面的精简写法:

1. 读取JSON并提取数字转日期

import re
import json
from datetime import datetime

# 读取你的JSON文件
with open("your_data.json", "r") as f:
    raw_data = json.load(f)

# 定义正则:匹配任意大小写的Iteration,捕获后面的数字
# re.IGNORECASE 就是关键的不敏感开关
iteration_pattern = re.compile(r"iteration\s*(\d+)", re.IGNORECASE)

processed_dates = []
for item in raw_data["target_list"]:  # 替换成你JSON里的列表键名
    match_result = iteration_pattern.search(item)
    if match_result:
        # 提取数字,转成你需要的日期格式(这里假设数字是年份,可按需调整)
        target_num = int(match_result.group(1))
        formatted_date = datetime(year=target_num, month=1, day=1).strftime("%Y-%m-%d")
        processed_dates.append(formatted_date)

2. 直接替换原列表项(如果需要更新内容)

要是你想把原列表里的Iteration XXX直接替换成日期,用列表推导式+正则替换更简洁:

updated_list = [
    iteration_pattern.sub(
        lambda m: datetime(year=int(m.group(1)), month=1, day=1).strftime("%Y-%m-%d"),
        item
    )
    for item in raw_data["target_list"]
    if iteration_pattern.search(item)
]

为什么这方法好用?

  • 全覆盖:不管Iteration怎么变大小写,都能精准匹配,再也不用新增分支
  • 代码精简:去掉了冗余的拼接和多正则逻辑,维护起来省心太多
  • 扩展性强:后续要调整日期格式或者匹配规则,改正则和日期转换部分就行

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

火山引擎 最新活动