1. 正则表达式及其应用
正则表达式(英语:Regular Expression,常简写为regex、regexp或RE),又称正则表示式、正则表示法、规则表达式、常规表示法。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。
Linux中很多命令都支持正则表达式,比如接下来要提到的grep命令,而接下来我们要讲的内容也将以grep命令结合正则表达式,来充分介绍一些常用的用法。
正则表达式有两种:标准正则表达式和扩展正则表达式。
正则表达式的元字符从功能上可以分为以下四类:字符匹配,次数匹配,位置锚点,分组和逻辑组合。以下也将逐一介绍。
补充:
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
最初的正则表达式出现于理论计算机科学的自动控制理论和形式化语言理论中。在这些领域中有对计算(自动控制)的模型和对形式化语言描述与分类的研究。
1940年,沃伦·麦卡洛克与Walter Pitts将神经系统中的神经元描述成小而简单的自动控制元。
1950年代,数学家斯蒂芬·科尔·克莱尼利用称之为“正则集合”的数学符号来描述此模型。肯·汤普逊将此符号系统引入编辑器QED,随后是Unix上的编辑器ed,并最终引入grep。自此以后,正则表达式被广泛地应用于各种Unix或类Unix系统的工具中。正则表达式的POSIX规范,分为基本型正则表达式(Basic Regular Expression,BRE)和扩展型正则表达式(Extended Regular Express,ERE)两大流派。在兼容POSIX的UNIX系统上,grep和egrep之类的工具都遵循POSIX规范,一些数据库系统中的正则表达式也符合POSIX规范。grep、vi、sed都属于BRE,是历史最早的正则表达式,因此元字符必须转译之后才具有特殊含义。egrep、awk则属于ERE,元字符不用转译。
补充2:
1.1 正则表达式中字符匹配
1.1.1 匹配任意字符
.
可以匹配任意的单个字符、英文字母、数字,以及他本身。
.
可以连续使用,比如我们可以写出..m..
这样一个正则表达式,他将匹配所有:前面有任意两个字符,后面紧跟着一个m,又随后跟着任意两个字符的文本。
1.1.2 匹配.
元字符怎么办?
有时候我不想让.
去匹配任