正则表达式
限定符
? -- used?-- 这个字符串d出现1次或0次 (也就是d可有可无)
* -- ab*c--b这个字符可以出现0或n次
+ -- ab*c --b这个字符可以出现n次
限定出现次数
{} --ab{6}c --b这个字符可以出现6次
{} --ab{2,6}c --b这个字符可以出现2-6次
{} --ab{2,}c --b这个字符可以出现2次以上
多个字符限定时
(ab)+ -- ab这个字符可以出现n次
...
或运算符
| -- a (cat | dog) -- a cat或者a dog
字符类
[] -- [abc]+ --方括号表示 字符只能从中选择(abc,abbbcc,...)
[] -- [a-z]+ -- 所有的小写英文字符
[] -- [a-zA-Z]+ -- 所有的英文字符
[] -- [a-zA-Z0-9]+ -- 所有的英文和数字字符
[] -- [^a-zA-Z0-9]+ -- 匹配中括号内以外的
[] -- [^0-9]+ -- 匹配非数字字符(包括换行符)
元字符
\d -- 数字字符 =>[0-9]
\D -- 非数字字符 =>[^0-9]
\w -- 单词字符英文,数字,下划线
\W -- 非单词字符英文,数字,下划线
\s -- 空白符包含换行符和Tap
\S -- 非空白符包含换行符和Tap
. -- 任意字符 不包含换行符
^ -- 匹配行首
$ --匹配行尾
^ --^a -- 匹配行首的 a
$ --$a -- 匹配行尾的 a
贪婪和懒惰匹配
匹配html标签<...>
<.+>将会匹配标签内部的内容
修改为<.+?>将贪婪匹配=>装换成懒惰匹配
举例:
1.找出rgb颜色
#[a-fA-F0-9]{6}\b------颜色值都为16进制 所以字母都在a-f之间 末尾加入\b代表单词边界
2.IP地址匹配(困难)
\d+\.\d+\.\d+\.\d ------\d+匹配任意长度大于1的数字 \.代表.的字面量 但是.在正则表达式中是一个特殊符号 所以需要\进行转义 范围未限定
((25[0-5]|2[0-4]\b|[01]?\b\b?)\.){3}(25[0-5]|2[0-4]\b|[01]?\b\b?)\b ------ 25[0-5]|2[0-4]\b|[01]?\b\b?第一个数:三个数字有三种情况25[0-5]或者2[0-4]\b或者[01]\b\b [01]:0或1 最后一种情况 数字可能是一位两位三位[01]?\b\b?