正则
正则测试网址 :http://tool.chinaz.com/regex
正则表达式只和字符串打交道
字符组 : [] 写在中括号中的内容,都会被匹配,顺序一定从小到大
[0-9] 匹配数字
[a-z] 匹配小写字母
[A-Z] 匹配大写字母
[8-9] 批配8-9的数字
[a-zA-Z] 匹配大小写字母
[a-zA-Z0-9] 匹配大小写字母+数字
[a-zA-Z0-9_] 匹配数字字母下滑线、
[1-6b-f_] 匹配1-6 b-f _ 字符组可以写任一范围
有一些有特殊意义的元字符进入字符组中会回复它本来的意义 : 量词 和 . | [ ] ( ) 在里边也加转义符,不然[]成对出现会匹配不到 字符组里面的
转义符 如果想得到一个 就要进行转义 \
注意 \w 表示匹配 w 字符无特殊意义
\w 也表示 w 单个是无意义的
元字符
w 匹配数字字母下划线 word关键字[0-9a-zA-Z_]
d 匹配所有数字 关键字digit [0-9]
s 匹配所有 空格
/回车 关键字space [
]
#匹配换行符
#匹配制表符
#匹配 空格 ' '
W 匹配非数字字母下划线
D 匹配非数字
S 匹配非空格 tab 回车
表示单词边界 每一个' '空格表示一个单词 使用时可判断单词以。。开头 以。。结尾
放在后面表示以这个数据结尾
和转义字母数字相关的 元字符
w d s W S D
^匹配一个字符串的开始
$匹配一个字符串的结束 这两个符号请注意 他会认为整个字符串都是一个整体' '空格不代表下一个字符串 不同于
. 表示匹配除换行符的所有单个字符
[^] 出现在【】里的都不会被匹配(匹配不出现的)
a|b 或
符合a规则的或者b规则的都可以被匹配
如果a规则是b规则的一部分,且a规则比b规则要苛刻/长,就把a规则写在前面
将更复杂的更长的规则写在最前面
() 分组
表示给几个字符加上量词约束的需求的时候,就给这些量词分在一个组
量词
{n} 表示 这个量词之前的字符出现n次
{n,} 表示这个量词之前的字符至少出现n次
{n,m} 表示这个量词之前的字符出现n-m次
? 表示匹配量词之前的字符出现 0次 或者 1次 表示可有可无 默认贪婪/量词? 惰性匹配
+ 表示匹配量词之前的字符出现 1次 或者 多次
* 表示匹配量词之前的字符出现 0次 或者 多次
正则小结
元字符 : d w s
W D S . ^ $ [] [^] | ()
量词 : ? + * {n} {n,} {n,m}
贪婪匹配/惰性匹配 : 默认贪婪(因为回溯算法)/量词? 惰性匹配
普通字符就表示一个正常的字符
元字符表示它特殊的意义 如果转义元字符,那么这个元字符就失去了特殊意义
几个字符的组合关系
字符/元字符 只约束一个字符
字符+量词 约束一个字符连续出现的次数
字符+量词+? 约束一个字符连续出现的最少次数,非贪婪模式语法
字符+量词+?+x 约束一个字符连续出现量词范围内的最少次数,遇到x就立即停止
非贪婪匹配没有单用的