关于正则表达式,作为软件工程师应该比较熟悉了。所谓正则表达式,就是表示字符串的格式。正则表达式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

[系列][编译原理]正则表达式相关推荐

  1. 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——1 概述

    说明:本系列文章介绍的算法均来自编译原理(龙书)一书,如果读者对代码没有兴趣,只想了解算法思路,完全可以阅读龙书相关章节内容,比我讲得清晰透彻. 序: 啃编译原理半年以来,任然徘徊在前4章,其间反反复 ...

  2. 【编译原理】正则表达式

    08年9月入学,12年7月毕业,结束了我在软件学院愉快丰富的大学生活.此系列是对四年专业课程学习的回顾,索引参见:http://blog.csdn.net/xiaowei_cqu/article/de ...

  3. 【编译原理】编译原理系统学习与实践系列文章汇总目录(持续更新中)

    本文属于「编译原理」系列文章的汇总目录,这一系列正式开始于2021/10/22,着重于「编译原理的学习与实践」.众所周知,编译原理难学难精,因此本系列将至少持续到作者本人「精通编译原理」为止(笑).由 ...

  4. c语言正则表达式_CS143:编译原理|PA2:正则表达式和词法分析

    本文使用 Zhihu On VSCode 创作并发布 这是本人实现斯坦福CS143变编程作业的笔记,对应第二次作业PA2.有关文章目录.环境搭建和一些说明请看第一篇:CS143:编译原理 | 环境搭建 ...

  5. [编译原理随记]正则表达式转为NFA状态图(Thompsion构造法)

    上级文章 [编译原理随记]正则表达式记号和状态图:https://blog.csdn.net/qq_28033719/article/details/107067798 [编译原理随记]NFA转DFA ...

  6. 编译原理-正则文法与正则表达式的相互转化

    正则文法与正则表达式的相互转化 前言 一.正则文法 1.定义 2.例子 二.正则表达式 1.定义 2.例子 三.转换规则 1.正则文法转换为正则表达式 2.正则表达式转换为正则文法 四.转换例子 1. ...

  7. 正则表达式引擎的构建——基于编译原理DFA(龙书第三章)——5 DFA最小化

    完整引擎代码在github上,地址为:https://github.com/sun2043430/RegularExpression_Engine.git DFA最小化的算法原理 "DFA状 ...

  8. 【编译原理】让我们来构建一个简单的解释器(Let’s Build A Simple Interpreter. Part 4.)(python/c/c++版)(笔记)

    [编译原理]让我们来构建一个简单的解释器(Let's Build A Simple Interpreter. Part 4.) 文章目录 python代码 C语言代码 总结 在上一篇文章中,您学习了如 ...

  9. 编译原理第三版王生原pdf_CS143:编译原理 | 环境搭建HelloWorld

    本文使用 Zhihu On VSCode 创作并发布 本文是本人新开的坑的第一篇博客,另一个坑请看MIT 6.828 实现操作系统.从另一个坑的第一篇复制两段话: 写成博客的目的是防止自己走马观花,花 ...

最新文章

  1. 炼个BERT别人花几分钟你花了快1天?谷歌:我这是4810亿参数的巨型BERT
  2. 使用自动化插件release来管理maven项目的版本发布
  3. bool 变量想为什么一般初始化为FALSE 比较好?
  4. producer send源码_RocketMq系列之Producer顺序消息发送源码分析(四)
  5. 我的Go+语言初体验——【三、spx案例测试_许式伟先生推荐补充(附-视频)】
  6. 《Head First 设计模式》第十章-状态模式 状态模式
  7. js如何提高for循环的效率_让你瞬间提高工作效率的常用js函数汇总
  8. 撩开Docker的面纱
  9. oracle服务器支持ipmi带外管理,ipmi带外管理
  10. csharp:Compare two DataTables to rows in one but not the other
  11. SQL常用语句一览(增删改查Easy)
  12. 仅为代码实际运行资源付费 解构国内首个函数计算
  13. SpringBoot入门教程(十四)导出Excel
  14. springboot毕业设计 基于springboot旅游景区景点购票系统毕业设计设计与实现参考
  15. 宝塔面板强制绑定手机号码解决办法
  16. Google Filament 源码学习(三):Material System (二)
  17. 如何突破安全狗远程桌面防护
  18. 【Android进阶】20、音频播放:SoundPool 类、单元测试:Espresso框架
  19. P1460 健康的荷斯坦奶牛 Healthy Holsteins (dfs)
  20. [pandas基础]Pandas Series和Pandas DataFrame基础操作

热门文章

  1. 安装容器编排工具 Docker Compose
  2. 在Ubuntu下创建hadoop组和hadoop用户
  3. Please let us know in case of any issues
  4. mac里打开隐藏的 library文件夹
  5. linux命令积累之egrep命令
  6. ambari 自定义组件安装
  7. python dash_Dash是Databricks Spark后端的理想基于Python的前端
  8. 数据科学生命周期_数据科学项目生命周期第1部分
  9. leetcode 154. 寻找旋转排序数组中的最小值 II(二分查找)
  10. leetcode1053. 交换一次的先前排列(贪心算法)