正则表达式的简单整理

前端之家收集整理的这篇文章主要介绍了正则表达式的简单整理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
一、定义:正则表达式就是一串能够匹配某种规则的字符。
二、各种元字符
(1)重复次数
1、*:表明某个字符的任意数量,例如:.*:表明除换行符外的任意字符连续出现任意次
2、{2},{2,5},{2,}:前一个字符连续出现的次数,例如:a{2},字符a连续出现2次,\d{2,5}:连续出现2到5个任意数字。\d{2,}:重复2次或更多次。
3、+:类似于*,只不过*可以重复0次,而+至少要重复一次。
4、?:重复0次或一次。
5、*?:重复任意次,但尽可能少重复
6、+?:重复1次或更多次,但尽可能少重复
7、??:重复0次或1次,但尽可能少重复
8、{n,m}?:重复n到m次,但尽可能少重复
9、{n,}?:重复n次或更多次,但尽可能少重复
(2)匹配字符
1、.(点):匹配除了换行符以外的任意字符。
2、\d:匹配一个数字
3、\D:匹配任意非数字的字符。
3、\s:匹配任意的空白符,例如空格,制表符,换行符等。
4、\S:匹配任意不是空白符的字符。
4、\w:匹配字母或数字或下划线或汉字等。
5、\W:匹配任意不是字母,数字,下划线,汉字的字符,
5、[]:划分出一个指定的匹配范围,例如:[1-3]:匹配1到3的任意一个数字,[aeIoU]匹配a,e,i,o,u中的任意一个,[1-3a-c]:匹配1到3,a到c的任意一个
(3)子表达式
1、():指定一个子表达式,例如(\d{1,3}\.){3}\d{1,3}:显示将\d{1,3}\.作为一个子表达式重复3次,在跟上1到3个数字,这是一个简单的IP地址匹配表达式
2、\1:每一个子表达式都会自动分配一个组名,例如:\1:1就是组名,\1表示第一组,组名也可以指定.
3、(?<Word>\w+)或(?‘Word’\w+):给子表达式指定组名,word为组名。
(4)捕获
1、(exp):匹配exp,并捕获文本到自动命名的组里。
2、(?<name>exp):匹配exp,并捕获文本到名称为name的组里,也可以写成(?'name'exp).
3、(?:exp):匹配exp,不捕获匹配的文本,也不给此分组分配组号。
(5)零宽断言
1、(?=exp):匹配exp前面的位置,断言自身出现的位置的后面能匹配表达式exp,例如:\b\w+(?=ing\b):匹配以ing结尾的单词的前面部分(即除了ing意外的部分),如查找I like singing,它会匹配sing
2、(?<=exp):匹配exp后面的位置,它断言自身出现的位置的前面能匹配表达式exp,例如:(?<=\bre)\w+\b:匹配以re开头的单词的后半部分(即除了re以外的部分),如查找reading a book时,它会匹配ading。
3、(?!exp):匹配后面跟的不是exp的位置
4、(?<!exp):匹配前面不是exp的位置
(6)负向零宽断言:只匹配一个位置,并不消费任何字符,例如a[^u]\w:如果出现非u的字符,就会匹配上,awd,结果会是awd,如果使用负向零宽断言a(?!u)\w,结果会是:aw,(?!u)不占用一个字符的位置
1、(?!exp):零宽度负预测先行断言,断言此位置的后面不能匹配表达式exp,例如a(?!u)\w:查找awd,结果会是aw
2、(?<!exp):零宽度正回顾后发断言,断言此位置的前面不能匹配表达式exp:(?<![a-z]\d{7}匹配前面不是小写字母的七位数字。
(7)注释
1、(?#comment):这种类型的分组不对正则表达式的处理产生任何影响,用于提供注释让人阅读。
(7)其他
1、\b:限界符,表明一个word的开始和结尾,例如:\bhi\b,表明能够完全匹配hi的正则表达式
2、\B:匹配不是单词开头或结束的位置。
2、^:匹配字符串的开始。
3、[^x]:匹配除了x以外的任意字符。
4、[^aeIoU]:匹配除了aeIoU这几个字母以外的任意字符。
3、$:匹配字符串的结束。
4、\:转义字符,可以用来取消一些字符的特殊意义,例如:\*:表示*本身,而不是元字符*,
三、贪婪与懒惰
1、贪婪匹配:当正则表达式中包含能接受重复的限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。考虑这个表达式:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab,这被称为贪婪匹配
2、懒惰匹配:跟贪婪相反,懒惰匹配时匹配尽可能少的字符,贪婪匹配都可以转换成懒惰匹配,只要在它重复部分的后面加上一个问号?。这样.*?就意味着匹配任意数量的重复,但是在能使整个匹配成功的前提下使用最少的重复,例如:a.*?b,搜索aabab的话,它会匹配字符串aab和ab
原文链接:https://www.f2er.com/regex/361694.html

猜你在找的正则表达式相关文章