博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
常见对面-day09
阅读量:7099 次
发布时间:2019-06-28

本文共 7569 字,大约阅读时间需要 25 分钟。

day09-常见对象-正则表达式

1 字符类演示

  • A:字符类
    • [abc] a、b 或 c(简单类)
    • [^abc] 任何字符,除了 a、b 或 c(否定)
    • [a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围)
    • [0-9] 0到9的字符都包括
class DemoRegular {public static void main(String[] args) {    String regux0="[abc]";   //a,b或c的某一个    /*    matches()     方法用于检测字符串是否匹配给定的正则表达式    */    System.out.println("b".matches(regux0));//“b”在regux内    System.out.println("f".matches(regux0));//“f”不在regux内    System.out.println("ab".matches(regux0));//必须是单个字符    System.out.println("------------");    //打印一个分隔线    String regux1="[^abc]";   //任何字符,除了a,b,或c    /*    matches()     方法用于检测字符串是否匹配给定的正则表达式    */    System.out.println("b".matches(regux1));//“b”在regux内    System.out.println("f".matches(regux1));//“f”不在regux内    System.out.println("ef".matches(regux1));//必须是单个字符     System.out.println("------------");    //打印一个分隔线     String regux2="[a-fA-Z]";   //a-f和A-Z内的单个字符    /*    matches()     方法用于检测字符串是否匹配给定的正则表达式    */    System.out.println("b".matches(regux2));//“b”在regux内    System.out.println("g".matches(regux2));//“f”不在regux内    System.out.println("B".matches(regux2));//“B”在regux内    System.out.println("ef".matches(regux2));//必须是单个字符     System.out.println("------------");    //打印一个分隔线     String regux3="[0-9]";   //0-9内的单个字符(必须是字符,不是整型数)    /*    matches()     方法用于检测字符串是否匹配给定的正则表达式    */    System.out.println("b".matches(regux3));//“b”不在regux内    System.out.println("2".matches(regux3));//“2”不在regux内    System.out.println("10".matches(regux3));//10是两个字符    }}/*运行结果:truefalsefalse------------falsetruefalse------------truefalsetruefalse------------falsetruefalse*/复制代码

2 预定义字符类演示

  • . 任何字符。
  • \d 数字:[0-9]
  • \w 单词字符:[a-zA-Z_0-9]
  • \W 非字符[^\w]
class DemoRegualar1 {    public static void main(String[] args) {    String regux0=".";       //一个.表示任意单个字符,两个.表示任意两个字符    System.out.println("a".matches(regux0)); //    System.out.println("1".matches(regux0));     System.out.println("---------");     String regux1="\\d";       //使用\d表示0-9的单个字符,\\d前的\表示转义    System.out.println("2".matches(regux1));     System.out.println("10".matches(regux1)); //10为两个字符    System.out.println("---------");     String regux2="\\w";       //使用\w表示a-z,A-Z以及0-9的单个字符,\\w前的\表示转义    System.out.println("2".matches(regux2));     System.out.println("b".matches(regux2));     System.out.println("B".matches(regux2));    //\W表示非字符,记[^\w]    }}/*运行结果:truetrue---------truefalse---------truetruetrue*/复制代码

3 Greedy数量词

  • X? X,一次或一次也没有
  • X* X,零次或多次
  • X+ X,一次或多次
  • X{n} X,恰好 n 次
  • X{n,} X,至少 n 次
  • X{n,m} X,至少 n 次,但是不超过 m 次
class DemoRegualar2 {    public static void main(String[] args) {    String regux0="a?";   //0次或1次    System.out.println("a".matches(regux0));  //1次    System.out.println("".matches(regux0));   //0次    System.out.println("aa".matches(regux0));    System.out.println("--------");    String regux1="a*";   //任意次    System.out.println("a".matches(regux1));   //1次    System.out.println("".matches(regux1));    //0次    System.out.println("aa".matches(regux1));  //2次    System.out.println("--------");    String regux2="a+";   //1次到多次,除了0次    System.out.println("a".matches(regux2));   //1次    System.out.println("".matches(regux2));    //0次    System.out.println("aa".matches(regux2));  //2次    System.out.println("--------");        String regux3="a{5}";   //恰好n次    System.out.println("a".matches(regux3));   //1次    System.out.println("".matches(regux3));    //0次    System.out.println("aaaaa".matches(regux3));  //5次    System.out.println("--------");    String regux4="a{5}";   //至少n次    System.out.println("a".matches(regux4));   //1次    System.out.println("aaaaaa".matches(regux4));    //6次    System.out.println("aaaaa".matches(regux4));  //5次    System.out.println("--------");    String regux5="a{3,5}";   //至少n次,但不超过m次    System.out.println("a".matches(regux5));   //1次    System.out.println("aaa".matches(regux5));    //3次    System.out.println("aaaaa".matches(regux5));  //5次    }}/*运行结果:truetruefalse--------truetruetrue--------truefalsetrue--------falsefalsetrue--------falsefalsetrue--------falsetruetrue*/复制代码

4 正则表达式的分割功能

  • String类的功能:public String[] split(String regex)
class DemoRegular3 {    public static void main(String[] args) {    String regux="ab def g";    String[] str0=regux.split(" ");   //使用空格“ ”来分隔regux    System.out.println(str0);         //输出分割后的地址,其实没意义    for(int i=0;i

5 正则表达式的替换功能

  • String类的功能:public String replaceAll(String regex,String replacement)
class DemoRegular4 {    public static void main(String[] args) {        String regux="abc def";        String str=regux.replace("ab","de");  //用de替换掉ab        System.out.println(str);        String regux0="abc dabef";        String str0=regux0.replace("ab","de");  //用de替换掉ab,可以替换掉出现的所有ab        System.out.println(str0);    }}复制代码

5 正则表达式的分组功能

  • 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:
  • 1     ((A)(B(C)))   2     (A   3     (B(C))   4     (C) 复制代码
class DemoRegular5 {    public static void main(String[] args) {        String regux0="abccdefffghiiiijk"; //要求按照叠词分隔字符串        String[] regux1=regux0.split("(.)\\1+");        for(int i=0;i

6 Pattern和Matcher的概述

  • 模式和匹配器的典型调用顺序

  • 通过JDK提供的API,查看Pattern类的说明

  • 典型的调用顺序是

  • Pattern p = Pattern.compile("a*b");

  • Matcher m = p.matcher("aaaaab");

  • boolean b = m.matches(); 可以使用该功能进行查找信息

查找电话号码地址import java.util.regex.Pattern;import java.util.regex.Matcher;class DemoFindPhone {    public static void main(String[] args) {        String str="ahsdb13083663322ashd13083533211shf13020669918hsdgg";        String regux="\\d{11}";        Pattern p=Pattern.compile(regux);   //获取正则表达式        Matcher m = p.matcher(str);        while(m.find()) {        //find查找是否匹配,返回值是boolean            System.out.println(m.group());  //group将上次查找的值输出        }    }}/*运行结果:130836633221308353321113020669918*/复制代码

7 Math类的概述和使用方法

  • A:Math类概述
    • Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。
  • B:成员方法
    • public static int abs(int a) 取绝对值
    • public static double ceil(double a) 一个数的顶,例如12.5取为13.0
    • public static double floor(double a) 一个数的地板,例如12.5取为12.0
    • public static int max(int a,int b) min自学 取大的
    • public static double pow(double a,double b) a的b次方
    • public static double random() 0-1随机数
    • public static int round(float a) 参数也可为double,四舍五入
    • public static double sqrt(double a) 开平方
class DemoMath {    public static void main(String[] args) {        int i=Math.abs(16);        System.out.println(i);        System.out.println(Math.abs(-16));  //abs表示取绝对值        System.out.println(Math.ceil(12.5));  //取比12.5大的最近的整数        System.out.println(Math.floor(12.5)); //取比12.5小的最近的整数        System.out.println(Math.max(3,5));  //取大的        System.out.println(Math.pow(2.0,3.0)); //2的3次方        System.out.println(Math.random()); //0-1之间随机数        System.out.println(Math.round(3.2f)); //四舍五入        System.out.println(Math.round(3.6f));        System.out.println(Math.sqrt(4.0));  //开方            }}/*运行结果:161613.012.058.00.2943041624534042342.0*/复制代码

8 Random方法概述

  • A:Random类的概述
    • 此类用于产生随机数如果用相同的种子创建两个 Random 实例,
    • 则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
  • B:构造方法
    • public Random()
    • public Random(long seed)
  • C:成员方法
    • public int nextInt()
    • public int nextInt(int n)
import java.util.Random;class DemoRandom {    public static void main(String[] args) {        Random r=new Random();        int a=r.nextInt();        int b=r.nextInt();        System.out.println(a);  //输出一个随机整数        System.out.println(b);        Random r0=new Random(10);  //有种子标记,第二次运行时,结果不变        int c=r0.nextInt();        int d=r0.nextInt();        System.out.println(c);        System.out.println(d);    }}/*运行结果;第一次编辑运行结果:-468972919803410719-11577930701913984760第二次运行结果:-17374419517825485-11577930701913984760*/复制代码

转载于:https://juejin.im/post/5bd735df518825610701af05

你可能感兴趣的文章
基础命令学习目录首页
查看>>
陶哲轩实分析 习题 7.5.3
查看>>
(转)getDefinitionByName,getQualifiedClassName,getQualifiedSuperclassName用法
查看>>
2016.11.18随笔
查看>>
Struts2 系列问题一
查看>>
DP(优化) UVALive 6073 Math Magic
查看>>
java 编写小工具 尝试 学习(二)
查看>>
在平台中使用JNDI 数据源
查看>>
Windows下Java环境变量配置
查看>>
JS-JavaScript类库整理 [更新中...]
查看>>
分布式缓存的面试题11
查看>>
rep insw的用法小记
查看>>
程序员节诗词
查看>>
git远程仓库
查看>>
mysql之 重建GTID下主从关系
查看>>
Oracle 表空间与数据文件
查看>>
Centos创建ftp服务器
查看>>
python爬虫-url
查看>>
阿里云 phpwind帮助文档
查看>>
关于移动端键盘弹出
查看>>