正则表达式

限定符:?   /   *   /   +   /   {数字,数字}
?:表示符号前的符号可有可无
used?:说明d有没有都可以匹配

如下图:没有?的时候只能匹配到used,添加?以后可以匹配到used、use

* :代表*前面的字符可以出现0个或多个字符

如下图:c可以不出现、可以出现一次、可以出现无数次

 

 

 + : 前面出现的字符可以出现一次或以上

如下图:abd匹配不到

 

 

 {数字} :指定出现次数

如图:ab和d中间只能出现6个C才能被匹配到

 

 

 {数字,数字}:指定出现的次数范围(如果希望的次数只有下限没有上限,则省略后面的数字:{数字,})

如图:ab和d中间可以出现2到6个C就会被匹配到

以上提到的都是单个字符,如果需要匹配字符的组合,需要将字符组合用括号括起来

如图:a和d中间出现2次以上的bc

 

 

 

 | :或运算符

如图:表示匹配 a cat 或者 a dog

不添加括号表示:匹配  a cat 或者 dog

 

 

 

字符类:

指定字符的范围:[]+

[a-z]+:表示匹配所有的小写字母

 

[a-zA-Z]+:表示匹配所有的小写字母和大写字母

 

[a-zA-Z0-9]+:表示匹配所有的小写字母、大写字母和数字

 

 

 如果添加 ^ 表示匹配除了改范围内的其他所有字符,但是包括换行符也会被匹配到

如图:表示匹配所有除了小写字母以外的字符

[^a-z] 表示与 不包含 小写字母的字符匹配

^[a-z] 匹配以小写字母 开头 的文本串

 

 

 

 元字符:

\d表示匹配数字 = [0-9]+

带+号表示匹配到连续的数字:即出现多次

 \w表示单词字符(英文、数字、下划线)

 

 

 \s表示空白符(包含Tab、空格、换行符)

 

\D表示非数字字符

 

 

 \W表示非单词字符

 

 

 \S 表示非空白字符

 

 

 

 .*  表示任意字符但是不包含换行符

 

 

 

 ^ 表示匹配后面字符位开头的字符

如图:表示匹配以a开头的字符

 

 

 $表示匹配前面字符为结尾的字符

如下图:表示匹配以a为结尾的字符

 

 

 

贪婪与懒惰匹配

想要匹配html标签字符

如图:如果使用<.*>会匹配整个字符串

 

 

 解决这个问题需要将正则表达式改成<.*?>其中的?会将正则表达式中默认的贪婪匹配切换成懒惰匹配

 

 

 

实例1:匹配以下十六进制表达的颜色

(\b表示单词字符的边界)

 

 

 如果不加\b的匹配效果

 

 

 

实例2:匹配文本中所有出现的ip地址

\d+匹配任何长度大于1的数字

\. 表示匹配 .

但是此时没有限制范围:因为ip地址每一位都要在0-255之间

 

 

 所以要换种方式表达:

\b(25[0-5]|2[0-4]\d|[0-1]?\d\d?\.){3}(25[0-5]|2[0-4]\d|[0-1]?\d\d?)\b

25[0-5]:表示如果是以25开头的,则第三位只能是0-5

2[0-4]\d:表示如果第一位是2开头,第二位是0-4,则第三位可以是0-9,可以用[0-9]或\d

[0-1]\d\d:表示如果第一位是0-1,则第二位和第三位可以是0-9

又因为可以是以为或者两位,不一定全部是三位数组组成的,所以其中一个的第一位和第三位加上?表示可有可无   [0-1]?\d\d?   或者  [0-1]?\d?\d

ip地址的一个数字加.的限制做好后,打好括号用{3}表示接连出现三次,第四位因为没有.所以就把\.之前的粘贴重复一次就可以了

posted @ 2022-08-11 17:16  小小野生程序员sunny  阅读(41)  评论(0编辑  收藏  举报