正则表达式的常用语法
正则在线检验:http://tool.chinaz.com/regex/
更多地语法可以参考jdk api中的Pattern类:http://tool.oschina.net/apidocs/apidoc?api=jdk-zh
普通字符:字母、数字、汉字、下划线,以及没有特殊定义的标点符号,这些都可以直接匹配。
简单的转义字符:
- \n,换行符;
- \r,回车符
- \t,制表符;
- \\,代表反斜杠\本身;
- \^、\$、\.、\(、\)、\[、\]、\?、\+、\*、\|,这些特殊符号在正则中都有特殊含义,如果想要使用这些符号本身,需要加上转义字符
标准字符集合:
- \d,表示任意一个0~9之间的数字
- \w,任意一个字母、数字或者下划线,即A~Z,a~z,0~9,_中的任意一个
- \s,表示空格、制表、换行等空白字符的其中一个
- .,点号可以匹配任意一个字符(除了换行符),如果要匹配\n在内的所有字符,一般用[\s\S]
- 注意:以上字母如果大写表示取反,比如\D,除了数字全都会匹配
自定义字符集合:
- [ab5@],匹配方括号中的任意一个字符,a或者b或者5或者@
- [^ab5],表示匹配a、b、5之外的任意一个字符
- [f-k],表示匹配f到k之间的任意一个字母
- [^f-k0-3],表示匹配除了f-k和0-3之外的任意一个字符
- 注意,除了^、-和\之外,其它特殊符号如果被包含在中括号之内,即使是有特殊含义,也将被视为普通字符
- 除了点号.之外,标准字符如果被包含在中括号之内,将保持原本的含义。
量词
- 修饰匹配次数的特殊符号
- {n},表达式重复n次,比如我想匹配连续的6个数字,可以\d{6}
- {m,n},表达式至少重复m次,最多重复n次
- {m,},表达式至少重复m次,没有上限
- ?,匹配表达式0次或者1次,相当于{0,1}
- +,表达式至少出现1次,相当于{1,},没有上限
- *,表达式出现0次,或者任意次,相当于{0,},没有上限,比如\d*,其它非数字的地方都算作0次,以空字符形式被匹配
- 匹配次数的【贪婪模式】:能匹配多位的就匹配多位,这也是正则的默认匹配模式。
- 匹配次数的【非贪婪模式】:即能匹配少位就匹配少位。要用此模式在次数后面加个问号?即可。
字符边界
- 本组标记匹配的不是字符而是符合某种条件的位置(零宽的匹配)。
- ^,