「REGULAR EXPRESSION」- 正则表达式

正则表达式是一种描述字符串结构模式的形式化的表达方法,具体讲指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。正则表达式使用一些基本的字符序列来描述所有的字符串结构。

正则表达式是按照一定的模板来匹配字符串的公式,由普通字符(例如字符a到z)和特殊字符组成。

历史由来

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

2)、在1956 年,出生在被马克·吐温(Mark Twain)称为“美国最美丽的城市之一”的哈特福德市的一位名叫Stephen Kleene的数学科学家,他在Warren McCulloch和Walter Pitts早期工作的基础之上,发表了一篇题目是《神经网事件的表示法》的论文,利用称之为“正则集合的数学符号”来描述此模型,引入了正则表达式的概念。正则表达式被作为用来描述其称之为“正则集的代数”的一种表达式,因而采用了“正则表达式”这个术语。

3)、之后一段时间,人们发现可以将这一工作成果应用于其他方面。Ken Thompson就把这一成果应用于计算搜索算法的一些早期研究,Ken Thompson是Unix的主要发明人,也就是大名鼎鼎的Unix之父。Unix之父将此符号系统引入编辑器QED,正则表达式的第一个实用应用程序即为Unix中的qed编辑器,然后是Unix上的编辑器ed,并最终引入grep。

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

实际应用

正则表达式更侧重于文本处理,正则表达式一般具有以下功能:
1)检查字符串中符合某个规则的子字符串,并可以获取该子字符串。
2)根据匹配规则对字符串进行替换操作。
正则表达式有三类主要应用:
(1)测试字符串是否匹配某个模式。例如,可以输入一个字符串进行测试看该字符串中是否存在一个电话号码模式或者一个信用卡模式,这成为数据的有效性检验。
(2)替换匹配模式的文本。可以再文档中使用一个正则表达式来表示特定文字,然后可以将其全部删除或者替换成别的文字。
(3)提取匹配模式的文本。可以用来在文本或者输入字段中查找特定的文字。

正则表达式在实践中的应用:
(1)偷懒。批量文本替换操作。
(2)爬虫。从抓取的网页中筛选出感兴趣的内容,不需要第三方提供固定的接口。
(3)日志分析。从NGINX的访问日志中筛选出百度蜘蛛的访问日志。
(4)网站验证。对用户输入的参数进行检查校验。
(5)等等…