正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。正则表达式可以帮助我们更好的描述复杂的文本格式。一旦你描述清楚了这些格式,那你就可以利用它们对文本数据进行检索、替换、提取和修改操作。
来源
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,元字符不用转译。
基本语法
一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列匹配某个句法规则的字符串。
举几个例子:
竖线代表选择(即或集),具有最低优先级。例如可以匹配grey或gray。
某个字符后的数量限定符用来限定前面这个字符允许出现的个数。最常见的数量限定符包括、和(不加数量限定则代表出现一次且仅出现一次):
加号代表前面的字符必须至少出现一次。(1次或多次)。例如,可以匹配google、gooogle、goooogle等;
问号代表前面的字符最多只可以出现一次。(0次或1次)。例如,可以匹配color或者colour;
星号代表前面的字符可以不出现,也可以出现一次或者多次。(0次、1次或多次)。例如,可以匹配42、042、0042、00042等。
圆括号可以用来定义操作符的范围和优先度。例如,等价于,匹配father和grandfather。
想学习更多的知识吗?
Python中如何利用正则表达式编程呢?本周大家一起来学习,欢迎关注公众号!
领取专属 10元无门槛券
私享最新 技术干货