正则表达式
正则表达式作为一门不受编程语言限制且用途很广的技术,花时间去深入理解并融会贯通是值得的。
网上有许多正则的用法介绍,我就不重复了
我想从学习一门编程语言的角度,浅析一下正则的学习过程
# 一、‘基础数据类型’
我们学习一个系统化的知识,一定要从其基础构成来了解。 就像我们学习一门编程语言,需要先了解语言的基础数据类型。
正则表达式的基本组成元素可以分为:字符和元字符。
字符很好理解,就是基础的计算机字符编码,通常正则表达式里面使用的就是数字、英文字母。
而元字符,也被称为特殊字符,是一些用来表示特殊语义的字符。如^表示非,|表示或等。
利用这些元字符,才能构造出强大的表达式模式(pattern)
# 第一个元字符
如果想在'apple'这个单词里找到‘a'这个字符,就直接用/a/这个正则就可以了。
但是如果想要匹配特殊字符的话,就得用上第一个元字符\, 它是转义字符字符,顾名思义,就是让其后续的字符失去其本来的含义。
我想匹配这个符号,由于这个符号本身是个特殊字符,所以我要利用转义元字符\来让它失去其本来的含义:
/\*/
# 特殊字符
如果本来这个字符不是特殊字符,使用转义符号就会让它拥有特殊的含义。
我们常常需要匹配一些特殊字符,比如空格,制表符,回车,换行等, 而这些就需要我们使用转义字符来匹配。下面上表格,并附上记忆方式:
# 匹配某种集合
上面都是介绍的怎么匹配单个字符,单个字符的映射关系是一对一的, 那么如果想匹配一类字符,实现一对多的映射呢? 比如0-9某个数字,a-z字母等
正则表达式也提供了
# 二、‘循环与流程控制’
我们学习一门编程语言,了解了数据类型后,一般下一步需要学习循环与流程控制
编程语言里要循环一般用for语句,而正则里一般有几种方式
# 循环元字符
例:我想匹配王冰冰 或者 冰冰,那么我需要用 /王?冰冰/ 这个正则
# 指定特定次数
例:'a'我想匹配3次,那么我就使用/a{3}/这个正则,或者说'a'我想匹配至少两次就是用/a{2,}/这个正则。
# 或
采用 | 元字符
A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'。