手机版

对正则表达式语法的深刻理解

时间:2021-09-07 来源:互联网 编辑:宝哥软件园 浏览:

4.选择和分组

(1).分组

字符组[]:表示匹配几个字符之一

字符组可以理解为一些字符的组合。字符组与普通字符的区别在于:abc普通字符是指匹配A下一个B下一个C,而字符组【abc】是指在同一位置匹配A或B或C;由于字符集本身的含义,这个字符集可以看作是一个普通的特殊字符。

共同性:共同性是因为它也意味着将某个位置的字符匹配到单个字符的操作也可以对其起作用;例如:[a-z]{ 6 };

特殊性:特殊是因为:1。其他字符在内部和外部可能有不同的含义,例如:-、等。2.同一个位置有很多选择,但这个选择仅限于一个人物;

字符组内部和外部字符之间的差异:

-:在字符集内,表示一个范围;在字符组之外只表示一个字符;

示例:

-在字符集之外

脚本类型=' text/JavaScript ' var str=' 2016-8-20 ';var reg=/16-8/g;console . log(str . match(reg));//16-8/脚本-在字符集内

脚本类型=' text/JavaScript ' var str=' 2016-8-20 ';reg=/1[6-8]/g;console . log(str . match(reg));//16 /script-字符组外的普通字符仅表示-字符本身,因此它匹配字符串1后跟6后跟8;所以现在是16-8

-它表示字符组中的一个范围,因此它匹配6到8之间的任何数字的字符,因此它是16;表示字符集内的一个点;表示字符组之外的任何字符(查找单个字符,换行符和行尾除外)。在字符集外

脚本类型=' text/JavaScript ' var str=' 2016-8-20 ';var reg=/6.8/g;console . log(str . match(reg));//6-8/脚本。在字符集内

脚本类型=' text/JavaScript ' var str=' 2016-8-20 ';var reg=/6[。]8/g;console . log(str . match(reg));//null/script。表示字符集之外的任何字符;因此,匹配是6后跟任意字符后跟8的字符串,因此匹配是6-8;

在人物群里,只是一个普通的人物来代表自己;所以匹配是6,然后是8。字符串为空;因为它不匹配;

字符组也可以分为匹配字符组和排除字符组,主要是因为含义的变化

:插入符号;

示例:

在字符集之外

脚本类型=' text/JavaScript ' var str=' Han ';var reg=/^ha/g;console . log(str . match(reg));///ha/script^在一个角色集中

脚本类型=' text/JavaScript ' var str=' Han ';var reg=/[^0-9]/g;console . log(str . match(reg));//h,a,n/script脱字符号是[]之外的锚点,表示它与以某个字符开头的字符或字符串匹配,表示在[]中除

注意:【A】表示匹配一个位置不等于A的字符,不要理解这个位置不是A就可以匹配,后者理解可以匹配一个空行。注意这个区别

示例:

脚本类型=' text/JavaScript ' var str=' Han ';var reg=/n[^q]/g;console . log(str . match(reg));//null/script注意:本例N后没有任何字符,因此匹配结果为空。如果按照上面的第二种理解,你可能会认为匹配结果是:n。

无论[]中有多少个字符,只有其中的任何一个字符会在同一位置匹配。如果我想在一个位置匹配一个字符串呢?

(2)选择

此时可以使用()加|,在正则表达式中表示或,而()在正则表达式中划分一个范围;单独使用()是没有意义的,只有和其他量词一起使用才会显示出它的作用(先说简单的例子,贪婪匹配和非贪婪匹配,再单独说,这里先不解释);

示例:

脚本类型=' text/JavaScript ' var str=' 2016-8-20 ';var reg=/(16-8)/g;console . log(str . match(reg));//16-8/script script type=' text/JavaScript ' var str=' 2016-8-20 ';var reg=/16-8/g;console . log(str . match(reg));//16-8/script这个例子是相同的,有或没有括号,这意味着匹配字符串16-8。

当()和|一起使用时,是多选结构,可以匹配任意子表达式()来表示一个范围;|表示选择方向

示例:

脚本类型=' text/JavaScript ' var str=' grey gray ';var reg=/gr[ea]y/g;console . log(str . match(reg));//灰色,gray reg=/gr(e | a)y/g;console . log(str . match(reg));//灰、灰/脚本以上两个匹配的结果是灰、灰,这意味着(|)的分支选择结构在一定程度上可以用[]相互替换

示例:

脚本类型=' text/JavaScript ' var str=' grey gray ';var reg=/GRE | ay | yg/g;console . log(str . match(reg));//gre,yg,ay/脚本输出结果:gre,yg,ay

括号的添加对结果有很大的影响,例如:

^hello |世界|嗨:比赛是你好或世界或嗨

(你好|世界|嗨):匹配的起始行是hello或world或hi

注意:虽然多选结构有时可以用字符组来表示,但它们可以相互表示,但是一个字符组只能匹配目标文本中的单个字符,并且每个多选结构本身可能是完整和规则的,可以匹配任何长度的文本

正则表达式中需要注意的几点:

1.在正则表达式中,空格字符也被视为正则字符;

2.-;*[]和[]的意思不一样。注意区别;注意字符组内外元字符的区别;

3.当[]被添加到几个字符时,字符串被视为一个字符组,而对于单个字符操作?*,等等。也可以使用。分类器之间的混合使用以及分类器和分组选择之间的混合将有贪婪和非贪婪匹配的概念,这将分别总结;

4.分支结构和字符组的区别;分支可以匹配任何长度的文本;一个字符集只能匹配一个字符;

5.注意一些概念的理解:例如,[x]的意思是“匹配一个不等于x的字符”,而不是“只有当这个位置不是x时才匹配”;[x]背后的概念可以匹配{x,y}中的空行?*理解;

6.决定匹配成功的是{x,y}中的X,X在匹配成功中起着关键作用。

以上就是边肖给大家带来的对正则表达式语法深刻理解的全部叙述,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你。非常感谢您对本页面的支持!

版权声明:对正则表达式语法的深刻理解是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。