正则表达式定义了字符串的模式,本质是一种特殊的字符串对象。
正则表达式可以用来搜索、编辑或处理文本。
正则表达式并不局限于某一种语言,但是在每种语言中有细微的差别。
1.正则表达式常用的方法
\d === [0-9] 代表一位数字
\d+ 代表1个数字,或多个数字
[\u4e00-\u9fa5] 代表汉字字符
* 代表0个或多个前边的符号 {0,}
. 代表1个任意的符号
+ 代表1个或多个前边的符号{1,}
? 代表0个或1个前边的符号 {0,1}
\s 代表空格
public static void main(String[] args) {
String s1 = "hello123";
//使用正则表达式 .*[A-Z].* .代表一个任意字符 *代表{0,} [A-Z]在这个范围内
System.out.println(s1.matches(".*[A-Z].*") ? "有大写字母" : "没有");
//2.判断字符串有没有汉字 [\u4e00-\u9fa5]汉字判断标准
String s2 = "hello,世界";
System.out.println(s2.matches(".*[\\u4e00-\\u9fa5].*") ? "有汉字" : "没有");
//3.判断字符串有没有数字 \\d代表[0-9]
String s3 = "java123";
System.out.println(s3.matches(".*\\d.*") ? "有数字" : "没有");
//4.判读字符串是不是一个标准的手机号
String s4 = "13289065323";
System.out.println(s4.matches("1[358]\\d{9}") ? "是手机号" : "不是手机号");
}
运行结果
2.String 支持正则表达式方法
.replaceAll() .
.replaceFirst()
.split()
.matches()
public static void main(String[] args) {
//replaceAll 把所有替换掉
System.out.println("he23llojava34".replaceAll("\\d", ""));
//replaceFirst 把首位替换掉
System.out.println("h234llojava".replaceFirst("\\d", ""));
//split 将字符串分割
String[] st = "java123mysql456pyhton789".split("\\d+");
System.out.println(Arrays.toString(st));
//match() 判断字符串是不是全是字符串组成
System.out.println("hello123".matches("\\d+"));
}
运行结果
3.Pattern 类:pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一 个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方法接受一个正 则表达式作为它的第一个参数
Matcher 类:Matcher 对象是对输入字符串进行解释和匹配操作的引擎。与Pattern 类一样, Matcher 也没有公共构造方法。你需要调用 Pattern 对象的 matcher 方法来获得一个 Matcher 对象。
public static void main(String[] args) {
//判断字符串是不是有数字
String st = "1hello234world456";
//Pattern类实例化
Pattern p = Pattern.compile("\\d+");
//matcher匹配 与p对象的条件匹配
Matcher m = p.matcher(st);
//.find()如果有匹配结果 返回false
while (m.find()) {
System.out.println(m.group()); //.group() 返回匹配结果
}
}
运行结果