正则表达式总结

来源:互联网 发布:python 财经数据接口 编辑:程序博客网 时间:2024/06/06 09:09
## 正则表达式
   java.util.regex.Pattern
   正则表达式:
   一个用来描述或者匹配一系列符合某个语法规则字符串的单个字符串
   使用:
   String | boolean mathches (Sting regex);,判断字符串是否符合regex正则表达式规则
   字符类
   [abc] a、b 或 c(简单类) 
   [^abc] 任何字符,除了 a、b 或 c(否定) 
   [a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围) 
   [a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集) 
   [a-z&&[def]] d、e 或 f(交集) 
   [a-z&&[^bc]] a 到 z,除了 b 和 c:[ad-z](减去) 
   [a-z&&[^m-p]] a 到 z,而非 m 到 p:[a-lq-z](减去)
   预定义字符类规则
   . 任何字符(与行结束符可能匹配也可能不匹配) 
   \d 数字:[0-9] 
   \D 非数字: [^0-9] 
   \s 空白字符:[ \t\n\x0B\f\r] 
   \S 非空白字符:[^\s] 
   \w 单词字符:[a-zA-Z_0-9] 
   \W 非单词字符:[^\w] 
   圆点用 \\.表示
   数量词规则
   X? X,一次或一次也没有 
   X   X,零次或多次 
   X+ X,一次或多次 
   X{n} X,恰好 n 次 
   X{n,} X,至少 n 次 
   X{n,m} X,至少 n 次,但是不超过 m 次 
   替换功能
   String | String replaceAll(String regex, String replacement) 
   根据指定正则表达式规则,替换所有符合规则的字符

   分组
   叠词切割:
   (.)\\1+
   (.)表示任意字符作为一个组
   \\1表示第一组出现一次
   + 表示出现1次或多次

   
String s1 = "sdqqfgkkkhjppppkl";
System.out.println(s1.replaceAll("(.)\\1+", ""));
String s2 = "我我....我...我.要...要要...要学....学学..学.编..编编.编.程.程.程..程";
System.out.println(s2.replaceAll("\\.","").replaceAll("(.)\\1+", "$1"));
## Pattern 和 Mather
   Pattern: Java中正则表达式的功能实现的提供者
   Mather: 匹配器
   格式:
   Pattern p = Pattern.compile(regex);//获取正则表达式
   Matcher m = p.matcher(string);//获取比较器
   boolean b = m.matches();
   以上同:string.matches(regex);效果

   
String s = "我的手机是18511866260,我曾用过18987654321,还用过18812345678";
Pattern p = Pattern.compile("1[0-9]{10}");//获取正则表达式
Matcher m = p.matcher(s);
while(m.find()) {
String string = m.group();
System.out.println(string);
}

## Math
   常用方法:
   Math.PI
   double Math.ceil();向上取整
   double Math.floor();  向下取整
   int Math.abs();    绝对值
   Math.max();
   Math.min();
   double Math.pow(x,y);x的y次方
   Math.random();    生成[0.0,1.0)间的小数
   int Math.round();     四舍五入
   double Math.sqrt();开平方

## Random
   专门用于生成随机数的类
   构造方法
   Random();
   Random(long seed);
   常用方法
   int nextInt();//随机生成一个整数
   int nextInt(int n);//生成随机数,范围在0和n之间,包含0不包含n

## System
   常用方法:
   public static void gc()//调用垃圾回收器
   public static void exit(int status)退出jvm虚拟机,非0表示异常退出
   public static void currentTimeMillis()获取当前时间毫秒值
   public static void arrayCopy(src,srcPos,dest,destPos,length)数组拷贝,给数组扩容

## BigInteger 和 BigDecimal
   BigInteger
   构造方法:
   public BigInteger(String val)
   常用方法
   public BigInteger add(BigInteger val)
   public BigInteger subtract(BigInteger val)
   public BigInteger multiply(BigInteger val)
   public BigInteger divide(BigInteger val)
   public BigInteger remainder(BigInteger val)
   BigDecimal
   为了更精确的计算小数
   System.out.println(12.3/0.3);//41.00000000000001
   System.out.println(2.0 - 1.1);//0.8999999999999999
   构造
   public BigDecimal(String val)
   方法
   public BigDecimal add(BigDecimal augend)
   public BigDecimal subtract(BigDecimal subtrahend)
   public BigDecimal multiply(BigDecimal multiplicand)
   public BigDecimal divide(BigDecimal divisor)
   推荐方式
   BigDecimal bd1 = new BigDecimal("2.0");
   BigDecimal bd2 = new BigDecimal("1.1");
   System.out.println(bd1.subtract(bd2));

## Date
   构造
   Date() 
   Date(long date) 
   方法:
   long getTime() //获取当前时间毫秒值
   void setTime(long time)  设置毫秒值,改变时间对象

   long 和 Date 互转
   long -> Date  getTime()
   Date -> long  构造方法,Date d = new Date(long date)


## SimpleDateFormat
   是抽象类DateFormat的直接子类,格式化并解析时间
   构造:
   SimpleDateFormat()使用默认个事解析时间
   SimpleDateFormat(String pattern)指定日期格式
   方法:
   public fianl String format(Date date)将时间按照指定格式转换为字符串
   public Date parse(String source)把字符串按照指定格式解析成Date

   String 和 Date 相互转换
   Date -> String     format
   String -> Date     parse


## Calendar
   Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。
   概述:可以对日期进行加减操作的类

   创建对象格式
   Calendar c = Calendar.getInstance();  //父类引用指向子类对象

   常用方法
   add(int field,int amount)对指定字段向前减,向后加
   正数表示向后计算n天后,负数表示向前计算n天前
   set(int field, int value)
   将给定的日历字段设置为给定值
   get(int field) 获取指定字段的值; 
   c.get(Calendar.YEAR);获取当前对象的年

   Date 和 Calendar 相互转换
   Calendar -> Date  
   使用calendar的Date | getTime()方法
   Date -> Calendar  
   date无法直接转换为calendar,可以先创建一个calendar对象,然后通过c.setTime(Date d)方法转换为Calendar对象

   练习
   生成日历
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2g手机内存不够怎么办 2g运行内存不够怎么办 手机运行内存2g不够怎么办 手机无法加载程序秒退怎么办 电脑账户密码忘记了怎么办 玩绝地求生卡顿怎么办 地下城总运行时间错误怎么办 逆战更新太慢怎么办 win7我的电脑没了怎么办 剑灵启动游戏慢怎么办 网页页面结束进程也关不掉怎么办 开机就启动微信怎么办 微信突然无法启动怎么办 微信发送太频繁怎么办 微信在电脑上打不开文件怎么办 微信照片电脑上打不开怎么办 换一部手机微信怎么办 微信支付宝停止运行怎么办 剑三重制版卡顿怎么办 剑三客户端更新不动了怎么办 安装包安装失败怎么办有内存 qq飞车换手机了怎么办 qq飞车求婚失败戒指怎么办 改脸型皮肤会下垂怎么办 情侣关系弄僵了怎么办 用微信交话费没有到账怎么办 微信交错话费了怎么办 微信缴费交错了怎么办 微信支付被投诉怎么办 微信q币充值错误怎么办 微信充值流量充错了怎么办 微信延迟到账怎么办 移动流量充错了怎么办 qq充话费等待发货怎么办 qq充值话费没到账怎么办 电信话费冲错了怎么办 微信手机充错话费充空号怎么办 京东地址写错了怎么办 京东售后不退款怎么办 冲了话费不到账怎么办 币安维护充值怎么办