[系列][编译原理]正则表达式
关于正则表达式,作为软件工程师应该比较熟悉了。所谓正则表达式,就是表示字符串的格式。正则表达式r完全由它所匹配的串集来定义。这个集合称为由正则表达式生成的语言,写作L(r)。此处的语言只是表示“串的集合”,它与程序设计语言并无特殊关系。
基本的正则表达式
正则表达式运算
有3种基本运算:
1. 从各选择对象中选择,用元字符|表示。比如: a|b
2. 连结,由并置表示。比如: ab
3. 重复或“闭包”,由元字符*表示。比如: a*
运算的优先和括号的使用
例如: a|(b(c*))
正则表达式的名字
这样为较长的正则表达式提供了一个简化的名字。例如:
定义 digit = 0|1|2|...|9
则序列(0|1|2|...|9) (0|1|2|...|9)*可被写作digit digit*
正则表达式的拓展
1. 一个或多个重复用元字符+表示。
2. 任意字符用元字符.表示。
3. 字符范围。例如[a-z]表示所有的小写字母。
4. 不在给定集合的任意字符用元字符~表示。例如: ~(a|b|c)
5. 可选的子表达式。
通用程序设计中记号的正则表达式
1. 数。
nat = [0-9]+
signedNat = (+|-)? nat
number = signedNat ("." nat ) ? (E signedNat)?
2. 保留字和标识符
reserved = if | while | do | ...
letter = [a - zA - Z]
digit = [0 - 9]
identifier = letter (letter | digit)*
3. 注释
转载于:https://www.cnblogs.com/cwblaze/archive/2010/01/29/1659042.html
[系列][编译原理]正则表达式相关推荐
- 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述
说明:本系列文章介绍的算法均来自编译原理(龙书)一书,如果读者对代码没有兴趣,只想了解算法思路,完全可以阅读龙书相关章节内容,比我讲得清晰透彻. 序: 啃编译原理半年以来,任然徘徊在前4章,其间反反复 ...
- 【编译原理】正则表达式
08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...
- 【编译原理】编译原理系统学习与实践系列文章汇总目录(持续更新中)
本文属于「编译原理」系列文章的汇总目录,这一系列正式开始于2021/10/22,着重于「编译原理的学习与实践」.众所周知,编译原理难学难精,因此本系列将至少持续到作者本人「精通编译原理」为止(笑).由 ...
- c语言正则表达式_CS143:编译原理|PA2:正则表达式和词法分析
本文使用 Zhihu On VSCode 创作并发布 这是本人实现斯坦福CS143变编程作业的笔记,对应第二次作业PA2.有关文章目录.环境搭建和一些说明请看第一篇:CS143:编译原理 | 环境搭建 ...
- [编译原理随记]正则表达式转为NFA状态图(Thompsion构造法)
上级文章 [编译原理随记]正则表达式记号和状态图:https://blog.csdn.net/qq_28033719/article/details/107067798 [编译原理随记]NFA转DFA ...
- 编译原理-正则文法与正则表达式的相互转化
正则文法与正则表达式的相互转化 前言 一.正则文法 1.定义 2.例子 二.正则表达式 1.定义 2.例子 三.转换规则 1.正则文法转换为正则表达式 2.正则表达式转换为正则文法 四.转换例子 1. ...
- 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——5 DFA最小化
完整引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git DFA最小化的算法原理 "DFA状 ...
- 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 4.)(python/c/c++版)(笔记)
[编译原理]让我们来构建一个简单的解释器(Let's Build A Simple Interpreter. Part 4.) 文章目录 python代码 C语言代码 总结 在上一篇文章中,您学习了如 ...
- 编译原理第三版王生原pdf_CS143:编译原理 | 环境搭建HelloWorld
本文使用 Zhihu On VSCode 创作并发布 本文是本人新开的坑的第一篇博客,另一个坑请看MIT 6.828 实现操作系统.从另一个坑的第一篇复制两段话: 写成博客的目的是防止自己走马观花,花 ...
最新文章
- 炼个BERT别人花几分钟你花了快1天?谷歌:我这是4810亿参数的巨型BERT
- 使用自动化插件release来管理maven项目的版本发布
- bool 变量想为什么一般初始化为FALSE 比较好?
- producer send源码_RocketMq系列之Producer顺序消息发送源码分析(四)
- 我的Go+语言初体验——【三、spx案例测试_许式伟先生推荐补充(附-视频)】
- 《Head First 设计模式》第十章-状态模式 状态模式
- js如何提高for循环的效率_让你瞬间提高工作效率的常用js函数汇总
- 撩开Docker的面纱
- oracle服务器支持ipmi带外管理,ipmi带外管理
- csharp:Compare two DataTables to rows in one but not the other
- SQL常用语句一览(增删改查Easy)
- 仅为代码实际运行资源付费 解构国内首个函数计算
- SpringBoot入门教程(十四)导出Excel
- springboot毕业设计 基于springboot旅游景区景点购票系统毕业设计设计与实现参考
- 宝塔面板强制绑定手机号码解决办法
- Google Filament 源码学习(三):Material System (二)
- 如何突破安全狗远程桌面防护
- 【Android进阶】20、音频播放:SoundPool 类、单元测试:Espresso框架
- P1460 健康的荷斯坦奶牛 Healthy Holsteins (dfs)
- [pandas基础]Pandas Series和Pandas DataFrame基础操作
热门文章
- 安装容器编排工具 Docker Compose
- 在Ubuntu下创建hadoop组和hadoop用户
- Please let us know in case of any issues
- mac里打开隐藏的 library文件夹
- linux命令积累之egrep命令
- ambari 自定义组件安装
- python dash_Dash是Databricks Spark后端的理想基于Python的前端
- 数据科学生命周期_数据科学项目生命周期第1部分
- leetcode 154. 寻找旋转排序数组中的最小值 II(二分查找)
- leetcode1053. 交换一次的先前排列(贪心算法)