欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

14 正则表达式

程序员文章站 2022-03-11 09:10:04
14 正则表达式补:SimpleDateFormat类 SimpleDateDormat主要是用于将日期进行格式化 , 可以将Date转成指定格式的字符串 , 也可以将字符串转成日期构造方法 :public SimpleDateFormat();//按默认格式做转换public SimpleDateFOrmat(String pattern);//按指定格式做转换成员方法 :public String format(Date date);//将Date转为Strin...

14 正则表达式

补:

SimpleDateFormat类

  • SimpleDateDormat主要是用于将日期进行格式化 , 可以将Date转成指定格式的字符串 , 也可以将字符串转成日期
构造方法 :
public SimpleDateFormat();					//按默认格式做转换

public SimpleDateFOrmat(String pattern);	//按指定格式做转换
成员方法 :
public String format(Date date);			//将Date转为String

public Date parse(String dateStr) throws ParseException;//将String转成Date
public class DateDemo1 {
	public static void main(String[] args) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss E");
		
		Date date = new Date();
		
		String s = sdf.format(date);
		
		System.out.println(s);
		
		SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
		
		String s2 = "1999年1月30日 1:30:00";
		
		Date parse = sdf2.parse(s2);
		
		System.out.println(parse);
		
		long t1 = parse.getTime();
		long t2 = System.currentTimeMillis();
		long t3 = t2 - t1;
		
		System.out.println(t3 / 1000 / 60 / 60 / 24);
	}
}
d 月中的某一天 , 一位数的日期没有前导零
dd 月中的某一天 , 一位数的日期有一个前导零
ddd 周中某天的缩写名称,在 AbbreviatedDayNames中定义
ddddd 周中某天的完整名称,在 DayNames 中定义
M 月份数字 , 一位数的月份没有前导零
MM 月份数字 , 一位数的月份有一个前导零
MMM 月份的缩写名称 ,在 AbbreviatedMonthNames中定义
MMMM 月份的完整名称 ,在 MonthNames中定义
y 不包含纪元的年份 , 如果不包含纪元的年份小于 10 , 则显示不具有前导零的年份
yy 不包含纪元的年份 , 如果不包含纪元的年份小于 10 , 则显示具有前导零的年份
yyy 包括纪元的四位数的年份
gg 时期或纪元 , 如果要设置格式的日期不具有关联的时期或纪元字符串 , 则忽略该模式
h 12 小时制的小时 , 一位数的小时数没有前导零
hh 12 小时制的小时 , 一位数的小时数有前导零
H 24 小时制的小时 , 一位数的小时数没有前导零
HH 24小时制的小时 , 一位数的小时数有前导零
m 分钟。一位数的分钟数没有前导零。
mm 分钟。一位数的分钟数有一个前导零。
s 一位数的秒数没有前导零。
ss 一位数的秒数有一个前导零。
f 秒的小数精度为一位 , 其余数字被截断
ff 秒的小数精度为两位 , 其余数字被截断
fff 秒的小数精度为三位 , 其余数字被截断
ffff 秒的小数精度为四位 , 其余数字被截断
fffff 秒的小数精度为五位 , 其余数字被截断
ffffff 秒的小数精度为六位 , 其余数字被截断
fffffff 秒的小数精度为七位 , 其余数字被截断

正则表达式

概述 :

正则表达式是对字符串操作的一种逻辑公式 , 就是用事先定义好的一些特定字符 , 及这些特定字符的组合 , 组成一个 “规则字符串”, 这个 " 规则字符串" 用来表达对字符串的一种过滤逻辑 .

常用规则 :

. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [ ^0-9 ]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[ ^\s ]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[ ^\w ]
X? X, 0次或1次
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
[abc] a、b 或 c(简单类)
\b 单词边界

验证QQ号
//非正则方式
import java.util.Scanner;

public class PattrernDemo1 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的QQ号");
		String qq = sc.next();

		System.out.println(checkQQ(qq));
	}

	private static boolean checkQQ(String qq) {
		if (qq.length() <= 5 || qq.length() >= 15) {
			return false;
		}
		if (qq.startsWith("0")) {
			return false;
		}
		for (int i = 0; i < qq.length(); i++) {
			if (!Character.isDigit(qq.charAt(i)))
				return false;
		}
		return true;
	}
}
//正则方式
import java.util.Scanner;

public class PattrernDemo2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入您的qq号");
		String qq = sc.nextLine();
		
		boolean  result  = checkQQ2(qq);
		if(result) {
			System.out.println("qq合法");
		}else {
			System.out.println("您的qq格式不正确");
		}
	}
	private static boolean checkQQ(String qq) {
		String regex = "[1-9]\\d{4,14}";
		return qq2.matches(regex);
	}
}
匹配功能
public boolean matches(String regex);
public class PattrernDemo3 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入一串手机号:");
		String phone = sc.next();
		String regex1 = "1[356789]\\d{9}";
		System.out.println(phone.matches(regex1));
		
		System.out.println("请输入一个邮箱账号:");
		String mail = sc.next();
		String regex2 = "[a-zA-Z1-9]\\w{4,14}@[a-zA-Z0-9]{2,}(\\.[a-zA-Z]{2,3})+";
		System.out.println(mail.matches(regex2));
	}
}
分割功能
public String[] split(String regex);
public class PattrernDemo4 {
	public static void main(String[] args) {
		String s1 = "ii,jj,kk";
		String[] sp1 = s1.split(",");
		System.out.println(Arrays.toString(sp1));
		
		String s2 = "ii.jj.kk";
		String[] sp2 = s2.split("\\.");
		System.out.println(Arrays.toString(sp2));
		
		String s3 = "ii jj kk";
		String[] sp3 = s3.split("\\s");
		System.out.println(Arrays.toString(sp3));

		String s4 = "C:\\Users\\Apase\\Desktop\\CSDN";
		String[] sp4 = s4.split("\\\\");
		System.out.println(Arrays.toString(sp4));
	}
}
替换功能
public String replaceAll(String regex,String replacement);
public class PattrernDemo5 {
	public static void main(String[] args) {
		String s = "18434763218";
		
		String str = s.replaceAll("(\\d{3})(\\d{4})(\\d{4})","$1****$3");
		
		System.out.println(str);
	}

}
获取功能
public static Pattern compile(String regex);		//将给定的正则表达式编译到模式中

public Matcher matcher(CharSequence input);			//创建匹配给定输入与此模式的匹配器

public boolean find();								//尝试查找与该模式匹配
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class PattrernDemo6 {
	public static void main(String[] args) {
		
		String s = "jin tian yao xia yu,da jia pa bu pa ?  huang bu huang ? are  you sure?";
		
        //获取Pattern对象
		Pattern pt = Pattern.compile("\\b[a-zA-Z]{3}\\b");
		
		//匹配器
		Matcher matcher = pt.matcher(s);
		
        //获取结果
		while (matcher.find()) {
			System.out.println(matcher.group());
		}
	}
}

本文地址:https://blog.csdn.net/Baldteen_/article/details/107373006

相关标签: 正则表达式