企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] # 正则 ## 匹配规则 ~~~ 字符: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 boolean matches(String regex) //判断字符串是否匹配给定的规则 public String[] split(String regex) //根据给定正则表达式的匹配规则,拆分此字符串 public String replaceAll(String regex,String replacement) //将符合规则的字符串内容,全部替换为新字符串 ~~~ 例子: ~~~ String qq="123456789"; String regex="[1-9][0-9]{4,14}"; boolean flag2=qq.matches(regex); String s = "18-22-40-65"; String regex = "-"; String[] result = s.split(regex); String s = "Hello12345World6789012"; String regex = "[0-9]"; String result = s.replaceAll(regex, "*"); ~~~ # Date 构造方法: ~~~ public Date()// 系统当前日期时间 public Date(long date) 得到一个1970年1月1日 0点这个时间基础上,加上参数date 毫秒值对应的日期时间 ~~~ ~~~ Date date=new Date(); ~~~ 方法: ~~~ public long getTime() 获取日期所对应的毫秒值 ~~~ # DateFormat DateFormat 日期/时间格式化子类的抽象类, 使用其子类SimpleDateFormat 实例化 构造方法: ~~~ public SimpleDateFormat() 默认的格式化操作 public SimpleDateFormat(String pattern) 按照指定的格式,进行日期格式化 日期和时间模式 y 年 M 年中的月份 d 月份中的天数 H 一天中的小时数(0-23) m 小时中的分钟数 s 分钟中的秒数 S 毫秒数 ~~~ 方法: ~~~ public final String format(Date date) 把日期 格式化成字符串 public Date parse(String source) 把日期字符串 转换成 日期对象 ~~~ 例子 ~~~ //创建日期格式化对象,在获取格式化对象时可以指定风格 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日 String str = ”2020年12月11日”; DateFormat df = new SimpleDateFormat(“yyyy年MM月dd日”); Date date = df.parse( str ); //Date对象中的内容为Fri Dec 11 00:00:00 CST 2020 ~~~ # Calendar 日历类,可获取日期中指定字段的值 方法: * public static Calendar getInstance() //获取日期对象 * public int get(int field) //获取时间字段值,字段参见帮助文档 - YEAR 年 - MONTH 月,从0开始算起,最大11;0代表1月,11代表12月。 - DATE 天 - HOUR 时 - MINUTE分 - SECOND秒 * public void add(int field,int amount) //指定字段增加某值 * public final void set(int field,int value)//设置指定字段的值 * public final Date getTime() //获取该日历对象转成的日期对象 ---- 例子: ~~~ Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); //修改当前时间为3天后 c.add(Calendar.DATE, 3); //修改当前时间为5小时后 c.add(Calendar.HOUR, 5); //设置时间为2020年5月20日 c.set(Calendar.YEAR, 2020); c.set(Calendar.MONTH, 4); c.set(Calendar.DATE, 20); Date d = c.getTime(); ~~~ 求出今天距离2020年1月1日还有多少天 思路: 1.获取当前时间对应的天数 2.获取2020年1月1日对应的天数 3.两个时间相减(2020年1月1日的天数 –当前时间天数) 代码实现: ~~~ public static void main(String[] args){ Calendar my = Calendar.getInstance(); Calendar c = Calendar.getInstance(); //设置年月日 2020-01-01 my.set(Calendar.YEAR, 2020); my.set(Calendar.MONTH, 0); my.set(Calendar.DATE, 1); //获取时间中的天数 int day = c.get(Calendar.DATE); int myDay = my.get(Calendar.DATE); System.out.println(myDay - day); } ~~~