JAVA学习笔记(十一)
正则表达式
1.1正则表达式的概念
正则表达式(英语:Regular Expression,在代码中常简写为regex)。
正则表达式是一个字符串,使用单个字符串来描述、用来定义匹配规则,匹配一系列符合某个句法规则的字符串。在开发中,正则表达式通常被用来检索、替换那些符合某个规则的文本。
1.2正则表达式的匹配规则
正则表达式的语法规则:
字符:x
含义:代表的是字符x
例如:匹配规则为 "a",那么需要匹配的字符串内容就是 ”a”
字符:\\
含义:代表的是反斜线字符'\'
例如:匹配规则为"\\" ,那么需要匹配的字符串内容就是 ”\”
字符:\t
含义:制表符
例如:匹配规则为"\t" ,那么对应的效果就是产生一个制表符的空间
字符:\n
含义:换行符
例如:匹配规则为"\n",那么对应的效果就是换行,光标在原有位置的下一行
字符:\r
含义:回车符
例如:匹配规则为"\r" ,那么对应的效果就是回车后的效果,光标来到下一行行首
字符类:[abc]
含义:代表的是字符a、b 或 c
例如:匹配规则为"[abc]" ,那么需要匹配的内容就是字符a,或者字符b,或字符c的一个
字符类:[^abc]
含义:代表的是除了 a、b 或 c以外的任何字符
例如:匹配规则为"[^abc]",那么需要匹配的内容就是不是字符a,或者不是字符b,或不是字符c的任意一个字符
字符类:[a-zA-Z]
含义:代表的是a 到 z 或 A 到 Z,两头的字母包括在内
例如:匹配规则为"[a-zA-Z]",那么需要匹配的是一个大写或者小写字母
字符类:[0-9]
含义:代表的是 0到9数字,两头的数字包括在内
例如:匹配规则为"[0-9]",那么需要匹配的是一个数字
字符类:[a-zA-Z_0-9]
含义:代表的字母或者数字或者下划线(即单词字符)
例如:匹配规则为" [a-zA-Z_0-9] ",那么需要匹配的是一个字母或者是一个数字或一个下滑线
预定义字符类:.
含义:代表的是任何字符
例如:匹配规则为" . ",那么需要匹配的是一个任意字符。如果,就想使用 . 的话,使用匹配规则"\\."来实现
预定义字符类:\d
含义:代表的是 0到9数字,两头的数字包括在内,相当于[0-9]
例如:匹配规则为"\d ",那么需要匹配的是一个数字
预定义字符类:\w
含义:代表的字母或者数字或者下划线(即单词字符),相当于[a-zA-Z_0-9]
例如:匹配规则为"\w ",,那么需要匹配的是一个字母或者是一个数字或一个下滑线
边界匹配器:^
含义:代表的是行的开头
例如:匹配规则为^[abc][0-9]$ ,那么需要匹配的内容从[abc]这个位置开始, 相当于左双引号
边界匹配器:$
含义:代表的是行的结尾
例如:匹配规则为^[abc][0-9]$ ,那么需要匹配的内容以[0-9]这个结束, 相当于右双引号
边界匹配器:\b
含义:代表的是单词边界
例如:匹配规则为"\b[abc]\b" ,那么代表的是字母a或b或c的左右两边需要的是非单词字符([a-zA-Z_0-9])
数量词:X?
含义:代表的是X出现一次或一次也没有
例如:匹配规则为"a?",那么需要匹配的内容是一个字符a,或者一个a都没有
数量词:X*
含义:代表的是X出现零次或多次
例如:匹配规则为"a*" ,那么需要匹配的内容是多个字符a,或者一个a都没有
数量词:X+
含义:代表的是X出现一次或多次
例如:匹配规则为"a+",那么需要匹配的内容是多个字符a,或者一个a
数量词:X{n}
含义:代表的是X出现恰好 n 次
例如:匹配规则为"a{5}",那么需要匹配的内容是5个字符a
数量词:X{n,}
含义:代表的是X出现至少 n 次
例如:匹配规则为"a{5, }",那么需要匹配的内容是最少有5个字符a
数量词:X{n,m}
含义:代表的是X出现至少 n 次,但是不超过 m 次
例如:匹配规则为"a{5,8}",那么需要匹配的内容是有5个字符a 到 8个字符a之间
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub //正则表达式 /*String a="13569875663"; String regx="[1-9][3-9] {10}"; boolean b=a.matches(regx); System.out.println(b); String a1="zhangsan@qq.com"; String r="[a-zA-Z_0-9]+@[a-zA-Z_0-9]+(\\.[a-zA-Z]+)+"; boolean b1=a1.matches(r);//匹配邮箱 System.out.println(b1);*/ /*String str1="135-6984-6523"; String r="-"; String[] arr=str1.split(r); for(int i=0;i<arr.length;i++) { System.out.println(arr[i]); }*/ /*String str1="hello,java"; String str2="java"; String str=str1.replaceAll(str2, "Monkey"); System.out.println(str);*/ /*String regx="[1-9][0-9]{4,14}"; String str="994958089"; System.out.println(str.matches(regx));*/ /*String str1="Hello12345World6789012"; String regx="[0-9]"; String str=str1.replaceAll(regx, "*"); System.out.println(str);*/ String str="(192.168.1.100)"; String r="\\."; String []a=str.split(r); for(int i=0;i<a.length;i++) { System.out.println(a[i]); } } }
Date
public class Test1 { public static void main(String[] args) { // TODO Auto-generated method stub /*Long l=System.currentTimeMillis(); System.out.println(l);*/ //当前日期距离1970年1月1日0:00:00的毫秒值 Date d=new Date(); System.out.println(d.toString()); Date d1=new Date(1526767666666l); System.out.println(d1); long l2=d.getTime(); System.out.println(l2); } }
public static void main(String[] args) { Calendar c=Calendar.getInstance();//计算从出生到当天的天数 c.set(Calendar.YEAR, 1995); c.set(Calendar.MONTH, 7); c.set(Calendar.DATE, 26); Date d=c.getTime();//将日历对象转换成日期对象 long lo=d.getTime();//用日期对象获取毫秒数 Date d2=new Date();//当前时间日期对象 long ln=d2.getTime();//获取当前时间的毫秒数 long l=(ln-lo)/1000/60/60/24; System.out.println(l); }
DateFormat
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat类)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。我们通过这个类可以帮我们完成日期和文本之间的转换。
代码演示
//创建日期格式化对象,在获取格式化对象时可以指定风格 DateFormat df= new SimpleDateFormat("yyyy-MM-dd");//对日期进行格式化 Date date = new Date(1607616000000L); String str_time = df.format(date); System.out.println(str_time);//2020年12月11日