正则表达式
限定符:? / * / + / {数字,数字}
?:表示符号前的符号可有可无
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}表示接连出现三次,第四位因为没有.所以就把\.之前的粘贴重复一次就可以了