红孩儿编辑器的模块设计15
查找功能的逻辑
需要配置的信息有查找目标是多个还是一个,查找方向是向前还是向后,查找范围是全文还是选中范围,查找使用语言是英语还是汉语,在英语的情况下,大小写字母是否敏感,在汉语的情况下,简体字与繁体字是否敏感。查找是否支持正则表达式。在支持正则表达式的情况下,正则表达式的写法支持哪一种规范呢?因为几乎各种高级的编程语言都内在默认支持了正则表达式,但遗憾的是正则表达式的写法没有标准化,各种语言支持的正则表达式的写法规范有差异。本系统支持的正则表达式形如
[0-9]{m,n}这是一个位数为m到n位的每位都是0到9的任何一个数的数。
(1|2)这是一位数,是1或2。
后缀符号有三个?,*,+分别代表零个到一个,零个到多个,一个到多个。/是分界符,\是转义符。
正则表达式内容很多,详细情况这里不描述了。
查找的实现过程:
1读取配置信息
2分析查找的目标字符串
3逐行对比分析是否存在目标字符串,如果找到了,记录位置,在行末尸毛检查英语单词或者汉语词语是否跨行,如果有跨行,调查跨行查找子程序进行处理。
4如果未找到,返回未找到的消息,如果有找到,对相应目标位置进行渲染,例如找到的位置背景色变成淡黄色。

替换功能与查找非常相似,值得注意的一点是它对文件有修改,要有一键恢复的功能。替换是比查找更有实用价值的功能,但为了保险起见,我们几乎都会先执行查找操作,提前预览一下,将要被替换的位置。再执行等效的替换操作。这与我们对数据库的操作类似,在执行更新与删除数据库记录之前,总要查出相关记录进行确认。

|

红孩儿编辑器的模块设计15相关推荐

  1. 用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器

    用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器 HP_tk.py模块是小白量化第二代量化系统中的开发模块.其中HP_tk.py模块是小白量化系统GU ...

  2. 用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器

    用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器 前面我们介绍了在Tkinter中使用exec()函数运行用户程序的方法.exec()采用多线程 ...

  3. C++ 开发者怒了:这个无用的模块设计最终会害死 C++!

    2018 年年底,C++ 标准委员会历史上规模最大的一次会议在美国 San Diego 召开,讨论了哪些特性要加入到 C++20 中.其中,Modules 便是可能进入 C++ 20 的一大重要特性: ...

  4. 【强烈推荐】如何解决JQuery类Post方式的跨域问题 - 空山雪林通用模块设计工作室 - ITeye技术网站...

    [强烈推荐]如何解决JQuery类Post方式的跨域问题 - 空山雪林通用模块设计工作室 - ITeye技术网站 [强烈推荐]如何解决JQuery类Post方式的跨域问题 博客分类:核心代码片段 jQ ...

  5. Python OpenCV开发MR智能人脸识别打卡系统(四、服务模块设计)

    需要源码请点赞关注收藏后评论区留言私信~~~ 整体系统讲解如下 Python OpenCV开发MR智能人脸识别打卡系统(一.需求分析与系统设计) Python OpenCV开发MR智能人脸识别打卡系统 ...

  6. 三甲:在线富文本编辑器的架构设计及实践

    12月5日, 极客邦(InfoQ)在深圳举办 GMTC 大会,蚂蚁集团语雀编辑器技术同学三甲受邀参加大会并分享<在线富文本编辑器的架构设计及实践>,以下内容是根据现场演讲收集整理. 大家下 ...

  7. PX4模块设计之二十六:BatteryStatus模块

    PX4模块设计之二十六:BatteryStatus模块 1. BatteryStatus模块简介 2. 模块入口函数 2.1 主入口battery_status_main 2.2 自定义子命令cust ...

  8. 客户关系管理项目——客户管理模块设计

    一 模块需求细化 1 实现客户信息录入 "添加"只有具有添加客户权限的用户才可以填写,只有具备3号角色的用户才能负责客户的添加,即超链接上会出现"添加客户"超链 ...

  9. BetaFlight模块设计之二十六:接收机任务分析

    BetaFlight模块设计之二十六:接收机任务分析 接收机任务 配置情况 硬件配置 软件配置 驱动配置 sbus驱动函数分析 sbusDataReceive函数 sbusFrameStatus函数 ...

  10. BetaFlight模块设计之十七:pinioBox任务分析

    BetaFlight模块设计之十七:pinioBox任务分析 pinioBox任务 业务配置 硬件配置 pinioBoxUpdate任务分析 基于BetaFlight开源代码框架简介的框架设计,逐步分 ...

最新文章

  1. ChannelFactory创建和销毁昂贵
  2. SolidWorks学习笔记4特征
  3. iframe嵌套页面 跨域_跨域解决方案
  4. 《Head First 设计模式》学习笔记——状态模式
  5. 走进武汉,探索多媒体开发最佳实践
  6. link引入html5,CSS引入方式 | link和@import的区别 — 生僻的前端考点
  7. C/C++中的占位符
  8. 基于S函数的BP神经网络PID控制器及simulink仿真
  9. WIndow Document
  10. python星号什么意思_Python星号*与**用法分析
  11. Togu Audio Line推出最新版本的TAL-BassLine-101插件 支持M1芯片
  12. 如何:从代码创建 UML 类图(ZZ)
  13. Java内存模型以及happens-before规则
  14. 获取域管理员权限的几种方式
  15. 动态规划和分治法解合唱队形问题
  16. 辛意云教授讲《论语》
  17. 远程操作安卓手机——所见即所控
  18. SGU 244. Height, Bisector and Median
  19. 企业为何需要在内部推广Devops
  20. 沟通的艺术:看人入里,看出人外 - part 1

热门文章

  1. 税号输入框 将input框中的输入自动转化成半角大写
  2. Tom猫喝牛奶(计时器、帧动画)
  3. java与设计模式-观察者模式
  4. python实现xlsx批量转xls(或者xls批量转xlsx)
  5. python抢点_零基础SQL小白入门学习路线与书单
  6. 【NFC】手机手环模拟门禁卡
  7. Unity中零基础实现人物控制摇杆(下篇)
  8. 【Flutter】Dart 中国身份证验证,出生日期、性别、年龄查询
  9. 你这一生其实只有9年
  10. 寓教于乐:12个学习编程的游戏化平台