正则表达式的语法和使用说明
正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为regex、regexp或RE),计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。
许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
如何学习正则?1、学习正则表达式的语法规则2、练习使用正则并能解决实际问题。学习正则表达式语法,主要就是学习元字符以及它们在正则表达式上下文中的行为。为了便于理解,文章所有示例的正则表达式用“regex=正则”表示,“=”号后面就是正则表达式,匹配到的字符会用颜色标注出来,连续匹配到的字符用一深一浅两种颜色区分。比如:regex=d+,其中d+就是一个正则,它匹配任意多于1个的数字,如:
标准字符集合:标准字符集合是能够与“多种普通字符”匹配的简单表达式,比如:d、w、s匹配数字0到9的任意数字可以regex=[0-9]也可以regex=d标准字符集要注意区分大小写,大写是相反的意思regex=D,则匹配非数字字符,即不能匹配数字0到9,如下:
限定字符(量词)限定字符又叫量词,是用于表示匹配的字符数量的。匹配任意1位数字可以regex=d匹配任意2位数字可以regex=dd匹配任意3位数字可以regex=ddd匹配任意16位数字,再这么写就有点傻了这里引入用于表示数量限定字符“{n}”“{n}”,n是一个非负整数,匹配确定的n次注意:regex=dd{3}匹配任意4个数字不是6个,量词只对它前面的字符负责,regex=dd{3}匹配的内容如下:
下面是一些常用的限定字符说明
定位字符(字符边界)
定位字符也叫字符边界,标记匹配的不是字符而是符合某种条件的位置,所以定位字符是“零宽的”。
“”匹配这样一个位置:前面的字符和后面的字符不全是w
如果在“hello,hello1 hello hello1 bhello”这个字符串里匹配regex=hello,
匹配到的结果如下:
除小数点“.”外,标准字符集合包含在方括号中,仍然表示集合范围。
regex=[d.+]匹配0-9的任意一个数字或者小数点“.”或者加号“+”
也就是说d在自定义集合中仍然表示数字,但是小数点在字符集合中只表示小数点本身,而不是除“ ”之外的任何单个字符。
括号中的表达式匹配到的内容会存储起来,并可以获取到括号中表达式匹配到的内容3、每一对括号会分配一个编号,使用( )的捕获根据左括号的顺序从1开始自动编号,编号为0的捕获是整个正则表达式匹配到的文本。捕获组( )可以把匹配的内容存储起来,那么如何获取( )捕获到的内容呢,下面介绍反向引用。反向引用“
umber”每一对括号会分配一个编号,使用( )的捕获根据左括号的顺序从1开始自动编号。通过反向引用,可以对分组已捕获的字符串进行引用。“
umber”中的number就是组号regex=(abc)d可以匹配字符串abcdabc,即表示把获取到的第一组再匹配一次,如下:
regex=love (?!story)匹配的结果如下(匹配“love ”后面不能是story):
如果想匹配“room”或“loom”,请用括号创建子表达式,regex=(r|l)oom,如下:
至此,正则表达式的语法介绍完了。