当前位置: 首页 > article >正文

OD E卷 - 实现【正则表达式替换】

题目

  • 输入一个字符串,对其中的下划线做统一替换;
  • 将其中的每个下划线“_”,使用特殊字符串“(^|$|[,+])”替换,并输出替换后的结果;
  • 如下场景不做替换:
    • 在一堆方括号之内的下划线不替换,方括号成对出现,且可以嵌套;
    • 转义的下划线“_” 不替换;

实例1:
输入:
“^(_9494)”
输出:
“^((^|$|[,+])9494)”

 

解题代码

方案1:


s = input().strip()

result = ""
part = "(^|$|[,+])"
stack = []

for idx, char in enumerate(s):
    if idx == 0 and char == "_":
        # 直接替换
        result += part
    elif char == "_":
        if s[idx -1] == "\\":  # 不替换
            result += char
        elif stack:  # 不替换
            result += char
        else:
            result += part
    elif char == "[":
        stack.append(char)
        result += char
    elif char == "]":
        stack.pop()
        result += char
    else:
        result += char

print(result)

 
方案2:


input_str = input()
count = 0
result = ""
for i in range(len(input_str)):
    if (input_str[i] == '[') :
        count+=1
    elif (input_str[i] == ']') :
        count-=1
    
    #使用count来判断是否在方括号内部
    if (count == 0) :
        if (input_str[i] == '_' and (i == 0 or input_str[i - 1] != '\\')) :
            result += "(^|$|[,+])"
        else:
            result += input_str[i]
        
    else:
        result += input_str[i]
print(result)

http://www.kler.cn/a/416815.html

相关文章:

  • HTML5系列(3)--多媒体标签详解
  • 说说Elasticsearch拼写纠错是如何实现的?
  • 高级 SQL 技巧:提升数据库操作效率与灵活性
  • 多线程+线程池
  • 【模型剪枝】YOLOv8 模型剪枝实战 | 稀疏化-剪枝-微调
  • docker服务容器化
  • 使用uni-app进行开发前准备
  • [2024年3月10日]第15届蓝桥杯青少组stema选拔赛C++中高级(第二子卷、编程题(5))
  • vue中如何获取public路径
  • Ubuntu 关机命令
  • 【LeetCode】每日一题 2024_11_30 判断是否可以赢得数字游戏(模拟)
  • NLP中的主题模型:LDA(Latent Dirichlet Allocation, 潜在狄利克雷分配)
  • vulnhub靶机之Fawkes
  • C#结合.NET框架快速构建和部署AI应用
  • 【超全总结】深度学习分割模型的损失函数类别及应用场景
  • sunshine和moonlight串流网络丢失帧高的问题(局域网)
  • SickOs: 1.1靶场学习小记
  • asyncio.run() 里面嵌套 asyncio.run() 可以吗?
  • 【Leetcode】3232.判断是否可以赢得数字游戏
  • APIPost内置函数的使用与学习
  • 利用若依代码生成器实现课程管理模块开发
  • 【QNX+Android虚拟化方案】128 - QNX 侧触摸屏驱动解析
  • 【一文读懂】大语言模型
  • Q-2A型金相试样切割机
  • 如何讲json数据转换为二维数据后导出为excel文件
  • Linux服务器CentOS操作系统运维用ntp和crontab同步网络时间