• java中的正则表达式


    1.判断一个字符串是否有数字组成,不使用正则

    package com.test.demo;
    
    public class zhengze {
        public static void main(String[] args) {
            String s="sdaflfj12343";
            char c[] =s.toCharArray();//将字符串转成字符数组
            for(int i=0;i<c.length;i++){
                if(!(c[i]>='0' && c[i]<='9')){
                    System.out.println("不是全由数字组成");
                    return;
                }
            }
            System.out.println("全由数字组成");
        }

    使用正则表达式

        String s="sdaflfj12343";
                if(s.matches("\d+")){//判断是否是数字
                    System.out.println("全都是由数字组成");
                    return;
                }
            System.out.println("全都不由数字组成");
        }

    1.1Pattern类

    Java中,所有的正则操作类都在java.util.regex包中,最重要的两个类:

    •          ·Pattern        
    •          ·Matcher

    Pattern类主要作用就是用来定义正则规范,获取Matcher类对象,进行字符串分割。

             ·定义正则规范:在Pattern类中,列出了全部的正则表达式的内容

    字符匹配:

    序号

    正则表达式

    描述

    1

    [abc]

    表示取值可能是a可能是b可能是c

    2

    [^abc]

    表示取值不可能是abc

    3

    [a-zA-Z]

    表示全部是字母,大小写都可以

    简短表达式

    序号

    正则表达式

    描述

    1

    d

    表示是数字

    2

    D

    表示是非数字

    3

    w

    表示是数字字母下划线

    4

    W

    表示非数字字母下划线

    5

    s

    表示是空格

    6

    S

    表示是非空格

    列出次数的表达式

    序号

    正则表达式

    描述

    1

    ?

    表示出现0次或者一次

    2

    *

    表示0次或多次

    3

    +

    表示一次或多次

    4

    {n}

    表示恰好出现n

    5

    {n,}

    表示出现至少n

    6

    {n,m}

    表示出现的次数在nm之间

    package com.wanczy.regexDemo;
    
    public class RegexDemo02 {
        public static void main(String[] args) {
            String s = "13515967537";
            if(s.matches("\d{11}")){
                System.out.println("是11位数字");
                return;
            }
            System.out.println("不是11位数字");
            
        }
    }    

    关系表达式

    序号

    正则表达式

    描述

    1

    (X|Y)

    表示是x或者y

    package com.wanczy.regexDemo;
    
    public class RegexDemo02 {
        public static void main(String[] args) {
            String s = "coma";
            if(s.matches("(com|cn|com.cn|gov|edu)")){
                System.out.println("是邮箱后缀");
                return;
            }
            System.out.println("不是邮箱后缀");
            
        }
    }    

    Pattern类是正则操作中最重要的一个类,所有的正则规范都必须在Pattern类中规定(这也是在String支持正则之前,之后话String可以直接操作正则表达式)假设现在我们没有学习String,也不知道String对正则有支持。

    Pattern类中常用的操作方法:

    •          ·取得Pattern类的对象:public static Pattern compile(String regex),参数是正则表达式
    •          ·取得Matcher类对象:public Matcher matcher(CharSequence input),CharSequence是字符串对象的最高的父类,表示的是需要进行正则匹配的字符  串
    •          ·字符串拆分:public String[] split(CharSequence input):进行字符串拆分,需要拆分的字符串就是传入的input。

     

    范例:进行字符串的拆分

    //字符串的拆分
            String s ="sdla23fkjklas;fj23l;as23dfjlas;fjl";
            Pattern p =Pattern.compile("[a-zA-Z]+");
            String sa[] =p.split(s);//进行字符串拆分
            for (int i = 0; i < sa.length; i++) {
                System.out.println(sa[i]);
            }

    2.1Matcher类

    主要的作用就是进行正则的匹配和字符串替换,本身没有构造发方法,必须使用Pattern类的matcher方法完成Matcher对象实例化。相应的操作方法:

             ·public boolean matches():进行字符串匹配

             ·public String replaceAll(String replacement):替换所有匹配的字符串

             ·public String replaceFirst(String replacement):替换第一次匹配的字符串

    范例:进行邮箱验证

        //邮箱的验证
            String s="sadfds_asfd@162.com";
            Pattern p=Pattern.compile("\w+@\w+\.(com|cn\.cn|cn\.edu|gov)");//取得Pattern类对象
            Matcher mathcer=p.matcher(s);//取得Matcher 对象
            boolean falg =mathcer.matches();//进行验证
            if(falg){
                System.out.println("是邮箱");
            }else{
                System.out.println("不是邮箱");
            }
        }

    字符串替换

        public static void main(String[] args) {
            String s = "asfd123asef123asdf43";
            Pattern p = Pattern.compile("\d+");//取得Pattern类对象
            Matcher m = p.matcher(s);//取得Matcher类对象
    //        s = m.replaceAll("你好中国");//将正则匹配的内容替换成你好中国
            s = m.replaceFirst("你好中国");//将第一个匹配的内容替换成你好中国
            System.out.println(s);
        }
        
  • 相关阅读:
    Mysql创建nextval函数
    宝塔配置tomcat的配置
    小程序获取授权信息
    pycharm 2017新建文件添加编码方式等
    Linux下利用expect,不用交互模式,直接登陆远程主机
    linux文件权限解析(摘)
    linux环境下根据文件的某一列进行去重
    oracle查询用户权限及角色(摘)
    插入排序-python实现
    css清除浮动方法
  • 原文地址:https://www.cnblogs.com/wusha/p/7157559.html
Copyright © 2020-2023  润新知