基本语法:
1.普通字符
字母,数字,汉字,下划线,以及没有特殊定义的标点符号,都是普通字符。表达式中的普通字符,在匹配一个字符串的时候,匹配与之相同的一个字符
2.简单的转义字符
\n | 代表换行符 |
\t | 代表制表符 |
\\ | 代表\本身 |
3.标准字符集合
能够与'多种字符'匹配的表达式(注意区分大小写,大写是相反的意思)
\d | 任意一个数字,0~9种的任意一个(\D表示非数字) |
\w | 任意一个字母或数字或下划线,也就是A~Z,a~z,0~9,_中任意一个 |
\s | 包括空格,制表符,换行符等空白符中的任意一个 |
. | 小数点可以匹配任意一个字符(除了换行符),如果要匹配包括换行符在内的所有字符,用[\s\S] |
4.自定义字符集合
[ ]方括号匹配方式,能够匹配方括号中的任意一个字符。
例如:[abc5@] 匹配"a"或"b"或"c"或"5"或"@"。
[^abc]匹配"a""b""c"之外的任意字符。
[f-k]匹配"f"~"k"之间的任意一个字符。
[^A-F0-3]匹配"A"~"F","0"~"3"之外的任意一个字符。
正则表达式的特殊符号,被包含到中括号中,则失去了特殊意义,除了^,-之外。
5.量词
修饰匹配次数的特殊符号
{n} | 表达式重复n次 |
{m,n} | 表达式至少重复m次,最多重复n次 |
{m,} | 表达式至少重复m次 |
? | 匹配表达式0次或者1次,相当于{0,1} |
+ | 表达式至少出现1次,相当于{1,} |
* | 表达式不出现或出现任意次,相当于{0,} |
匹配次数中的贪婪模式(匹配字符越多越好,默认都是该模式)
匹配次数中的非贪婪模式(匹配字符越少越好,修饰匹配次数的特殊符号后再加上一个问号)
例如: \d(3,6)? 非贪婪
6.字符边界
7.选择符合分组
简单实例
1.字符查找
Pattern创建表达式对象:Pattern p = Pattern.compile("\\w+");
创建Matcher对象:Matcher m = p.matcher("asfsd@@@###f23323");
m.find()方法扫描输入的序列,查找与该模式匹配的下一个子序列,如果存在则返回true,不存在返回false
m.group()方法是得到当前匹配的序列,返回类型为string。
/**
*
*/
package com.sunlei;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*@author 作者:sunlei
*@version 创建时间:2018年3月6日上午10:37:02
*/
public class Demo01 {
public static void main(String[] args) {
Pattern p = Pattern.compile("([a-z]+)([0-9]+)");
Matcher m = p.matcher("aa232***ssd445&&sds223");
while(m.find()) {
System.out.println(m.group());
}
}
}
2.字符替换
String newStr = m.replaceAll("#");替换掉正则查找到的字符,并返回替换后新的字符串
/**
*
*/
package com.sunlei;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*@author 作者:sunlei
*@version 创建时间:2018年3月6日上午10:40:07
*/
public class Demo02 {
public static void main(String[] args) {
Pattern p = Pattern.compile("[0-9]");
//创建Matcher对象
Matcher m = p.matcher("aa232***ssd445&&sds223");
//替换
String newStr = m.replaceAll("#");
System.out.println(newStr);
}
}
3.字符分割
通过split()方法对字符进行分割
/**
*
*/
package com.sunlei;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
*@author 作者:sunlei
*@version 创建时间:2018年3月6日上午10:40:07
*/
public class Demo04 {
public static void main(String[] args) {
String str = "a435b453c45354";
String[] arrs = str.split("\\d+");
System.out.println(Arrays.toString(arrs));
}
}