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);
    }
    
原文地址:https://www.cnblogs.com/wusha/p/7157559.html