正则表达式简介

正则表达式(regular expression,在代码中常简写为regex、regexp或RE),又称正规表示式、正規表示法、正規運算式、規則運算式、常規表示法,是计算机科学的一个概念。

正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

就是用一个“字符串”来描述一个特征,然后去验证另一个“字符串”是否符合这个特征。比如 表达式“ab+” 描述的特征是“一个 'a' 和 任意个 'b' ”,那么 'ab', 'abb', 'abbbbbbbbbb' 都符合这个特征。

正则表达式的历史

正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究。

美国新泽西州的Warren McCulloch和出生在美国底特律的Walter Pitts这两位神经生理方面的科学家,研究出了一种用数学方式来描述神经网络的新方法,他们创造性地将神经系统中的神经元描述成了小而简单的自动控制元,从而作出了一项伟大的工作革新。

在1951 年,一位名叫Stephen Kleene的数学科学家,他在Warren McCulloch和Walter Pitts早期工作的基础之上,发表了一篇题目是《神经网事件的表示法》的论文,利用称之为正则集合的数学符号来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为“正则集的代数”的一种表达式,因而采用了“正则表达式”这个术语。

之后一段时间,人们发现可以将这一工作成果应用于其他方面。

Ken Thompson就把这一成果应用于计算搜索算法的一些早期研究,Ken Thompson是 Unix的主要发明人,也就是大名鼎鼎的Unix之父。Unix之父将此符号系统引入编辑器QED,然后是Unix上的编辑器ed,并最终引入grep。Jeffrey Friedl 在其著作《Mastering Regular Expressions (2nd edition)》(中文版译作:精通正则表达式,已出到第三版)中对此作了进一步阐述讲解,如果你希望更多了解正则表达式理论和历史,推荐你看看这本书。

自此以后,正则表达式被广泛地应用到各种UNIX或类似于UNIX的工具中,如大家熟知的Perl。Perl的正则表达式源自于Henry Spencer编写的regex,之后已演化成了pcre(Perl兼容正则表达式Perl Compatible Regular Expressions),pcre是一个由Philip Hazel开发的、为很多现代工具所使用的库。正则表达式的第一个实用应用程序即为Unix中的 qed 编辑器。

现在所有的主流操作系统(Linux, Unix,Mac,Windows等)及编程语言(elphi、Scala、PHP、C#、Java、C++、Objective-c、Swift、VB、Javascript、Ruby以及Python等)都支持正则表达式。

本篇一JavaScript来演示正则表达式。因为读者可以直接在浏览器验证代码。

正则表达式的作用

  • 验证字符串是否符合指定特征,比如验证是否是合法的邮件地址。

  • 用来查找字符串,从一个长的文本中查找符合指定特征的字符串,比查找固定字符串更加灵活方便。

  • 用来替换,比普通的替换更强大。

之所以很多人感觉正则表达式比较复杂,一方面是因为大多数的文档没有做到由浅入深地讲解,概念上没有注意先后顺序,给读者的理解带来困难;另一方面,各种引擎自带的文档一般都要介绍它特有的功能,然而这部分特有的功能并不是我们首先要理解的。

参考文章:

https://baike.baidu.com/item/正则表达式

正则表达式工作原理 https://www.cnblogs.com/aaronjs/archive/2012/06/30/2570800.html

转载本站文章《深入正则表达式(0):正则表达式概述》,
请注明出处:https://www.zhoulujun.cn/html/theory/algorithm/IntroductionAlgorithms/8422.html

深入正则表达式(0):正则表达式概述相关推荐

  1. AS3.0 正则表达式规则

    谈谈正则表达式,AS3.0中引进了正则表达式.正则表达式是用于验证文本值是否符合特定模式. 正则表达式有四个部分.1元子符.2元序列.3标志.4数量表达符. 可以这样看 pattern RegExp= ...

  2. python正则表达式_Python正则表达式简记和re库!

    正则表达式是定义搜索模式的字符序列.通常这种模式被字符串搜索算法用于字符串上的"查找"或"查找和替换"操作,或者用于输入验证. 1. 正则表达式的语法 . 表示 ...

  3. java 正则表达式 demo_JAVA正则表达式语法

    JAVA正则表达式语法(转) 正则表达式语法 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符").模式描述在搜索文本时要匹配的一个或 ...

  4. java replaceall正则表达式_正则表达式的规则及应用

    第三阶段 JAVA常见对象的学习 正则表达式 (一) 正则表达式概述 (1) 简单概述 就是符合一定规则的字符串. (2) 常见规则 (3) 常见功能 //判断功能 正则表达式是非常强大的,我们通过几 ...

  5. ios html正则表达式,ios 正则表达式去html标签

    ios 正则表达式去html标签 [2021-01-27 12:53:55]  简介: php正则表达式去掉html的方法:首先使用"htmlspecialchars_decode" ...

  6. 【正则表达式】正则表达式引发的惨案 回溯 超时 cpu 100

    1.概述 转载:正则表达式引发的惨案 导读:正则表达式是程序员经常使用的工具之一.本文作者通过一个正则表达式的陷阱,先深入剖析了出现问题的原因,后给出怎么处理这类问题的方法.最后还给出了一些检测常见正 ...

  7. 正则表达式:JAVA正则表达式运用

    目录: 一.正则表达式简介 二.正则表达式符号的含义以及简单的例子 1.正则表达式符号含义 2.正则表达式符号对语言的支持 3.正则表达式一些特定的例子 3.1正则表达式应用--替换指定内容到行尾 3 ...

  8. php 正则表达式 菜鸟,正则表达式菜鸟教程.pdf

    正则表达式菜鸟教程 正则表达式菜鸟教程 1开山篇教程 正则表达式 - 教程 正则表达式(Regular Expression)是一种文本模式,包括普通字符 (例如,a 到 z 之间的字母) 和特殊字符 ...

  9. javascript 正则表达式 转换 java 正则表达式_JavaScript 正则表达式【转】

    一.JavaScript正则表达式 正则表达式(英语:Regular Expression,在代码中常简写为regex.regexp或RE)使用单个字符串来描述.匹配一系列符合某个句法规则的字符串搜索 ...

最新文章

  1. 『高级篇』docker之开发课程EdgeService(16)
  2. 记录一次Socket的异常:InputStream.read()阻塞问题
  3. 模板变量,过滤器和静态文件引用
  4. 揭秘“清华园”的“N”种打开方式!
  5. 【生活】2020 Alpha
  6. javascript实现一行文字随不同设备自适应改变字体大小至字数完全展示
  7. Pytorch:卷积神经网络-空洞卷积
  8. 微计算机原理与接口半期考试,最新南京邮电大学微型计算机原理与接口技术期末考试试卷...
  9. python小学生入门教程-python 小学生教程|怎么让一个小学生学会Python?
  10. 98点人脸关键点检测算法
  11. 微积分(七)——一元函数积分学
  12. android开发塔防游戏机,上手快又耐玩 五款Android平台塔防类游戏推荐
  13. u盘感染病毒文件夹变成exe
  14. 企业私有云资源规划及设计
  15. 读书百客:《游终南山》赏析
  16. Threejs实现模拟管道液体流动
  17. 在java中 int类型对应的包装类是_Java语言对简单数据类型进行了类包装,int对应的包装类是______。...
  18. 第一天Java学习笔记
  19. centos系统 yum 安装php-redis扩展
  20. OpenAI ChatGPT,爆火的OpenAi的ChatGPT聊天机器人注册和使用攻略,满满诚意哦

热门文章

  1. 奇妙的AE特效插件之红巨人粒子特效Trapcode Suite
  2. 绿色版premiere cs4无法导出(输出)解决方法
  3. 基于OpenLayer的室内地图前端设计开发
  4. 网页防封链接制作的原理有哪些?
  5. 软考网络工程师备考详细介绍
  6. 信用评分卡模型稳定度指标PSI
  7. 静态网络与动态网络的区别(简单易懂)
  8. 【实验四 循环结构】7-5 sdut-C语言实验- 做乘法
  9. python实践报告总结_关于开发Python项目的心得总结
  10. Day5 Numerical simulation of optical wave propagation之通过随机介质(如大气湍流)的传播(一)...