一、元字符
1)".",点用于匹配除换行符意外的任意字符
2)"w",匹配字母或数字或下划线或汉字
3)"s",匹配任意空白符
4)"d",匹配数字
5)"",匹配单词的开始或结束
6)"^",匹配字符串的开始
7)"$",匹配字符串的结束
二、重复限定符(量词)
1)"*",重复零次或更多次
2)"+",重复一次或更多次
3)"?",重复零次或一次
4)"{n}",重复n次
5)"{n,}",重复n次或更多次
6)"{n,m}",重复n到m次
三、分组
限定符是作用与它左边最近的一个字符,若想多个字符同时被限定,用()小括号分组作为一个整体,
例:^(ab)*,匹配包含0到多个ab开头的字符串
扩展:
组指的是用括号划分的正则表达式,举个简单的例子:A(B(C)D
组0:ABCD
组1:BC
组2:C
Macher类中的group(int i)返回对应的组,例如group(0)为ABCD,group(1)为BC,group(2)为C,
groupCount()返回组数。
group() 同 group(0)
就是匹配正则表达式整体结果
group(1)
列出第一个括号匹配部分,group(2) 列出第二个括号匹配部分,group(3) 列出第三个括号匹配部分。
四、转义
把元字符、限定符或者关键字转义成普通的字符,在转义的字符前面加个斜杠即可。在java代码中需要对反斜杠再加一个反斜杠。
例:匹配(ab)开头的字符串:^(\(ab\))+"
五、条件或
"|"表示或,满足正则里的任何一种条件都当成是匹配成功。
例:^(130|131|151)d{8}$ 匹配130或131或151开头的手机号
六、区间
[ ]中括号表示区间
例:[0-9],限定0到9 ; [A-Z]限定A-Z
^(130|131|151)d{8}$可以改成,^((13[01])|151)d{8}$
七、断言
即:返回匹配上字符的前后内容,不返回匹配的字符
例:"阅读数:641"
1)返回641数字,表达式为:\d+(?=)
2)返回641数字,表达式为:(?<=阅读数:)\d+
3) (?!pattern),匹配非pattern表达式的前面内容,不返回本身
4)(?pattern),匹配非pattern表达式的后面内容,不返回本身
八、常用方法:
1) 匹配
String matches()方法。用规则匹配整个字符串,只要有一处不符合规则,就匹配结束,返回false。
2)切割
String split()方法; 根据给定正则表达式的匹配拆分此字符串。返回一个数组。
3) 替换
String replaceAll(regex,str)方法; 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
4) 获取
将字符串中的符合规则的子串取出 find()。
操作步骤:
1,将正则表达式封装成对象。
2,让正则对象和要操作的字符串相关联。
3,关联后,获取正则匹配引擎。
4,通过引擎对符合规则的子串进行操作,比如取出。
什么情况下使用什么方法呢??????
思路方式:
1,如果只想知道该字符是否对是错,使用匹配。
2,想要将已有的字符串变成另一个字符串,替换。
3,想要按照自定的方式将字符串变成多个字符串。切割。获取规则以外的子串。
4,想要拿到符合需求的字符串子串,获取。获取符合规则的子串。