28Java中的常用类------正则表达式

练习代码在文末

1.正则表达式简介

  • 实际开发中,经常需要对字符串数据进行一些复杂的匹配、查找、替换等操作。通过“正则表达式”,可以方便的实现字符串的复杂操作
  • 正则表达式是一串特定字符,组成一个“规则字符串”,这个“规则字符串”,是描述文本规则的工具。正则表达式就是记录文本规则的代码
  • 例如:正则表达式:“[a-z]”表示a到z的任意一个字符;正则表达式“[a-z]+”表示有1个或多个a-z字符组成的字符串

2.常见的正则表达式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.分组“()”

  • 分组:()圆括号表示分组,可以将一系列正则表达式看做一个整体,分组时可以使用“|”表示“或”关系,例如:匹配手机号码前面的区号:
    (+86|0086)?\s?\d{11}
    上述例子中,圆括号表示这里需要出现“+86”或者“0086”

4.Demo

1.

package day02;
import java.util.Scanner;
/**
 * 字符串支持正则表达式的方法之一:
 * boolean matches(String regex);
 * 根据给定的正则表达式验证当前字符串是否满足格式要求
 * 满足则返回true,否则返回false
 * @author 李玉
 *
 */
public class Matches {

	public static void main(String[] args) {
		/**
		 * 电子邮箱的正则表达式
		 * [a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9]+)+
		 */
		String regex="[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\\.[a-zA-Z0-9]+)+";
		System.out.println(regex);
		String  mail="[email protected]";
		boolean flag=mail.matches(regex);
		if (flag) {
			System.out.println("是邮箱");
		}else {
			System.out.println("不是邮箱");
		}
		
		
		
		/**
		 * 验证手机号的正则表达式
		 * 要求用户输入一个手机号,然后经过验证输出是否为手机号码
		 * 1[0-9]{10}
		 */
		
		System.out.println("请用户输入一个手机号: ");
		Scanner scan=new Scanner(System.in);
		String regex2="1[0-9]{10}";
		String num=scan.next();
		boolean flag2=num.matches(regex2);
		if (flag2) {
			System.out.println("是手机号");
		} else {
			System.out.println("不是手机号");

		}
		
		
		
		/*
		 * 身份证号的验证
		 * \d{17}[0-9xX]
		 */
		String id = "110104198810102410";
		String regex1 = "^\\d{17}[0-9xX]$";
		/*
		 * matches方法是完全匹配,无论我们是否
		 * 在正则表达式中是否书写了"^","$"
		 */
		boolean match = id.matches(regex1);
		if(match){
			System.out.println("是一个身份证号");
		}else{
			System.out.println("不是一个身份证号");
		}

	}

}

2.

package day02;

import java.util.Arrays;

/**
 * 字符串支持正则表达式方法2:
 * String[] split(String regex)
 * 将当前字符串按照满足正则表达式的部分进行拆分
 * 返回拆分后的每段内容
 * @author 李玉
 *
 */
public class splitDemo {

	public static void main(String[] args) {
		String str = "asd12123sda4651231sadasdasd4543sdasd56as87sadasda21das45adsd";
		/*
		 * 保留每一段字母部分
		 * 按照数字拆分
		 */
		String[] array = str.split("[0-9]+");
		System.out.println(array.length);
		System.out.println(Arrays.toString(array));

	}

}


package day02;

public class splitTest {

	public static void main(String[] args) {
		String imgName="1.jpg";
		String names[] =imgName.split("\\.");
		imgName=System.currentTimeMillis()+"."+names[1];
		System.out.println(imgName);

	}

}

3.

package day02;
/**
 * 字符串支持正则表达式3:
 * String replaceAll(String regex,String str)
 * 将当前字符串中满足正则表达式的部分转换为给定的字符串
 * @author 李玉
 *
 */
public class replaceAll {

	public static void main(String[] args) {
		String str ="abc123abc12s3r";
		//将数字部分替换为LIYU
		str=str.replaceAll("\\d+", "LIYU");
		System.out.println(str);
		
	}

}
package day02;
//实现图片重命名
/**
 * 构建和谐社会做贡献的ReplaceAll
 * @author Administrator
 *
 */
public class replaceAllDemo2 {
	public static void main(String[] args){
			String regex 
				= "(SB|WQNMLGB|TMB|NND|WC|NC|CNM)";
			String message 
				= "WC!你个SB!怎么这么NC!WQNMLGB";
			message 
				= message.replaceAll(regex, "*****");
			System.out.println(message);
	}
}

猜你喜欢

转载自blog.csdn.net/qq_44787898/article/details/102955176