正则表达式入门课
涂伟忠
高级研发工程师
24700 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 18 讲
正则表达式入门课
15
15
1.0x
00:00/00:00
登录|注册

加餐 | 从编程语言的角度来理解正则表达式

思考题
总结
正则表达式的语法元素本质
从编程范式的角度理解
从编程语言的角度理解
正则表达式的角度理解

该思维导图由 AI 生成,仅供参考

你好,我是林耀平,你也可以直接叫我的网名笨笨阿林。很高兴能在极客时间和你聊聊我理解的正则表达式。
在我看来,正则表达式是那种典型的,对没用过的人来说,不觉得对自己有什么影响,可是一旦用过了,就再也回不去的神器。当然,我这里所说的“用过”,不是指简单使用一些正则的基本功能,而是指能够熟练运用基本功能和高级功能。所以说,对于正则表达式,你用得越熟练,就会越会惊叹于它的强大与神奇。
对于正则表达式的分析和解读,目前大多数文章和书籍多集中在正则表达式自身,比如对正则表达式的各个元字符、元转义序列以及匹配原理的分析和解读上。这些当然十分重要,是我们学习正则的基础。但这一节作为加餐,我将尝试给你提供一个新的理解角度:在我看来,正则表达式也是一门编程语言。为啥这么说呢?下面我将带你从编程语言发展史的角度,以及编程范式的角度来具体看看。

为啥说正则表达式也是一门编程语言?

我们知道,程序代码是对现实事物处理逻辑的抽象,而正则表达式,则是对复杂的字符匹配程序代码的进一步抽象;也就是说,高度简洁的正则表达式,可以认为其背后所对应的,是字符匹配程序代码,而字符匹配程序代码,背后对应的是字符匹配处理逻辑。
因此,我们可以这么认为,字符匹配处理逻辑,可以抽象为字符匹配程序代码;字符匹配程序代码,可以再进一步,抽象为高度简洁的正则表达式。怎么理解呢?我们举个例子来说。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

正则表达式:第4代面向问题的编程语言 正则表达式是一门第4代面向问题的编程语言,使用专门设计的语法元素来编写表达式。从编程范式的角度来看,它属于声明式编程范式,专注于任务的分析和表达。正则表达式的语法元素本质上是常见的通用编程语言中的处理逻辑和算法实现的体现,并且具有三大基本语法结构:顺序结构、分支结构和循环结构。这些基本语法结构在使用时,只需要简单直接地进行声明式描述,大大简化了文本查找匹配功能的实现。 从编程语言的发展和演化角度,以及从编程范式的角度来理解正则表达式,给我们带来了新的启发。它让我们意识到第4代语言相对于第3代语言更专注于某个特定、专门的业务逻辑和问题领域,同时也让我们认识到正则表达式的语法元素本质上是程序逻辑和算法的体现。这对于其他编程语言的学习和程序设计具有重要的作用和实际意义。 总之,正则表达式作为一门强大的第4代面向问题的编程语言,具有独特的应用领域和局限性,但其简洁、紧凑的基本语法结构为文本查找匹配功能的实现提供了便利。通过深入理解正则表达式,我们可以更好地理解编程语言的发展和演化,提升程序设计的能力。 希望本文能够帮助读者更好地理解正则表达式,并对编程语言的学习和程序设计有所启发。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《正则表达式入门课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(16)

  • 最新
  • 精选
  • 虹炎
    小结: 1,正则表达式属于领域特定语言 DSL(类比sql), 由专门解析引擎来处理执行。解决问题面限特点领域。 2,通用编程语言 GPPL,解决问题面广。 3,命令式编程范式:从前到后依次执行一条一条命令。(C , shell脚本), 4,声明式编程范式:利用抽象出的高层组件或者接口,通过组合这些高层组件解决问提。专注于任务的分析和表达。具体的处理逻辑和算法实现已经由大拿实现。不需要使用者实现。(比如sql,Kubernetes) 请老师指正我的理解!

    作者回复: 赞 :-)

    2020-07-03
    10
  • zcdll
    第一个问题:总结来说,加深了对正则表达式的理解,或者说开拓了新的理解方向。之前总觉得正则表达式很不 regular,看起来毫无头绪,都一堆符号串在一起就能解析字符串了,为啥?然后学习了这门课前几节的内容后,算是入了门,不过是从 正则表达式 本身的方向切入的,也就是先从 正则表达式 的相关概念来一步步学习。学习了本节后,有一种高屋建瓴的感觉,把正则和其他熟悉的高级编程语言做了对比,关联起来了,理解更深入了。 第二个问题:这一节提供了学习一门编程语言的方法论,除了基本的从某一门编程语言的特性概念入手之外,还可以从 编程语言的 共性入手,比如 编程范式,词法分析,语法分析等。这种方法论通过各个语言的对比,或许能够更快速、更深入的学习一门新的编程语言。

    作者回复: 赞👍🏻,总结的很好

    2020-07-05
    3
  • cugphoenix
    从命令式编程需要的角度去看待正则表达式,对于正则表达式的编写和分析都有很好的指导作用。对于编写来说:用顺序,分支,循环的行为去分析问题,然后转换成正则表达式;对于分析来说,把表达式(包括语法糖)拆解为顺序,分支,循环,能够更好的理解这个表达式的目的。

    作者回复: 👍🏻

    2020-07-03
    3
  • LDxy
    从语法结构的角度来看,正则表达式的基本语法结构与一般高级编程语言差不多,主要就是顺序结构(也称为连接结构)、分支结构(也称为选择结构)、循环结构(也称为重复结构)三种,其他都是这三种基本语法结构的组合,再加上一些语法糖。

    作者回复: 对的

    2020-07-03
    2
  • 肖海涛
    听完感觉豁然开朗。

    作者回复: ������

    2020-08-30
  • 修亦然
    一直以来是把正则当作一个处理文本类的工具,相对零散;而不是一种语言, 顺序结构,选择结构,循环结构加语法糖,会形成语言间的对比,有了参考性,使理解和使用的更加系统方便 目标 》分析组成结构 》使用字符 》输出结果
    2020-07-06
    3
  • ifelse
    当我们说一门编程语言是图灵完备的语言时,说明这门语言所拥有的编程能力,是现代计算机语言所能拥有的最高能力。--记下来
    2022-11-22归属地:浙江
  • ifelse
    学习打卡
    2022-11-22归属地:浙江
  • 佳娃
    计算机的发展会越来越分“片”,领域的细分可能会越来越多的出现这种特定领域专用语法元素,
    2022-05-02
  • 我的启发是:无论通用编程语言 GPPL,还是领域特定语言 DSL,都是一种工具,学精一门语言其他的也会大同小异
    2021-05-01
收起评论
显示
设置
留言
16
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部