Java中正则表达式的基本使用

这里主要介绍的是Java中的正则类的基本使用。学了这些基本类的学习后,就可以查看更深入的正则规则。
学了本篇内容你就学习了Java正则的40%剩下的50%~60%需要读者查看API,学习更好的匹配规则和更多的相关练习!!!

学前导读

这里的四大Java提供的API方法,判断、切割、替换、获取功能,其中的三个,判断、切割、替换功能,在String中有实现,这是为了使用便捷String才提供的。
但是完整的四个功能,判断、切割、替换、获取功能,Pattern和Matcher是都实现了的。其中Pattern和Matcher是配合使用的。

字符串的判断功能

在这里匹配文件格式是否为我们需要的文件格式。

public class Split08{
    public static void main(String args[]){
        String formate="java";
        String sta="Split08.java";
        String regex=".+\\."+formate;

        if(sta.matches(regex)){
            System.out.println("文件格式符合标准!!!");
        }else{
            System.out.println("文件格式必须为:["+formate+"]格式!!!");
        }
    }
}

运行结果:

文件格式符合标准!!!

字符串的切割功能

大家都知道邮箱地址由:【用户名@主机地址】组成!!
下面我们就用分割功能来提取用户名和主机地址!!!

public class Split01{
    public static void main(String []args){
        String ages="webEmainName@qq.com";
        String strArray[]=ages.split("@");
        System.out.println("length="+strArray.length);

        System.out.println("邮箱用户名:["+strArray[0]+"]");
        System.out.println("邮箱主机地址:["+strArray[1]+"]");
    }
}

运行结果:

length=2
邮箱用户名:[webEmainName]
邮箱主机地址:[qq.com]

但是值得注意的是下面这个例子:

public class Split03{
    public static void main(String args[]){
        System.out.println("标准字符串!!");
        System.out.println("注意长度变化!!!");
        String sta="aa  bb  cc";
        System.out.println("被切割字符串=["+sta+"]");
        String arrays[]=sta.split("\\s+");
        int len=arrays.length;
        System.out.println("Length=["+len+"]");
        for(int i=1;i<=len;i++){
            System.out.println("这是第"+i+"个字符串=["+arrays[i-1]+"]");
        }
        System.out.println("##################################");
        sta="  aa  bb  cc";
        System.out.println("被切割字符串=["+sta+"]");
        arrays=sta.split("\\s+");
        len=arrays.length;
        System.out.println("Length=["+len+"]");
        for(int i=1;i<=len;i++){
            System.out.println("这是第"+i+"个字符串=["+arrays[i-1]+"]");
        }
        System.out.println("##################################");
    }
}

运行结果:

标准字符串!!
注意长度变化!!!
被切割字符串=[aa  bb  cc]
Length=[3]
这是第1个字符串=[aa]
这是第2个字符串=[bb]
这是第3个字符串=[cc]
##################################
被切割字符串=[  aa  bb  cc]
Length=[4]
这是第1个字符串=[]
这是第2个字符串=[aa]
这是第3个字符串=[bb]
这是第4个字符串=[cc]
##################################

这个例子中多了一个空串!!在编程中注意这个空串的存在!!!

下面在来个分割例子:
切割磁盘路径

public class Split04{
    public static void main(String args[]){
        System.out.println("切割盘符路径!!!");
        String path="I:\\SelfPractice\\pattern";
        String arrays[]=path.split("\\\\");
        System.out.println("数组长度为=["+arrays.length+"]");
        for(String i:arrays){
            System.out.println("分割结果=["+i+"]");
        }
        System.out.println("################################");
    }
}

运行结果:

切割盘符路径!!!
数组长度为=[3]
分割结果=[I:]
分割结果=[SelfPractice]
分割结果=[pattern]
################################

字符串的替换功能

替换功能很强大,但是在这里只是介绍了它的简单应用,其实它本身是可以做很多事情的。字符去重,字符指定替换,等等。

字符的简单替换

public class Split05{
    public static void main(String args[]){
        System.out.println("字符串替换功能");
        String sta="Hello Regex 110";
        String regex="\\d";
        System.out.println("["+sta.replaceAll(regex,"*")+"]");
    }
}

运行结果:

字符串替换功能
[Hello Regex ***]

Pattern和Mather的判断功能

在这里匹配文件格式是否为我们需要的文件格式。

这就是之前在本文开篇前提到的。Pattern和Mattern的配合使用时,其本身就已经实现了字符串的相关处理,判断、替换、切割、获取功能,这四个功能。但是对于String的本身只实现了判断、替换、切割这三个功能。
因为这些都是查API能够轻松学会的东西,所以在这里就不再写Pattern和Matcher配合使用时的替换、切割这两个功能了。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Split06{
    public static void main(String args[]){
        System.out.println("Pattern和Matcher的使用顺序!");
        String sta="HelloWorld.zip";
        String regex="^.+\\."+"zip$";
        Pattern pattern=Pattern.compile(regex);
        Matcher matcher=pattern.matcher(sta);

        if(matcher.matches()){
            System.out.println("文件匹配成功!!!");
        }else{
            System.out.println("文件必须为zip文件!!!");
        }
    }
}

运行结果:

Pattern和Matcher的使用顺序!
文件匹配成功!!!

Pattern和Matcher的获取功能

从一串单词中找出所有的数字

import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Split07{
    public static void main(String args[]){
        System.out.println("找出单词中的所有数字!!!");
        String sta="Hello World 110 Hello 119 World";
        String regex="\\d+";

        Pattern pattern=Pattern.compile(regex);
        Matcher matcher=pattern.matcher(sta);
        while(matcher.find()){
            System.out.println("找到匹配类型:["+matcher.group()+"]");
        }
    }
}

运行结果:

找出单词中的所有数字!!!
找到匹配类型:[110]
找到匹配类型:[119]

总结:
正则的基本API方法调用,这是必须会的功能
判断功能

  • public boolean matches(String regex)
  • Pattern和Matcher类的使用

分割功能

  • public String[] split(String regex)
  • Pattern类的使用

替换功能

  • public String replaceAll(String regex,String replacement)
  • Pattern和Matcher类的使用

获取功能

  • Pattern和Matcher类的使用

不会的方法调用直接查API。可以照着上面的例子写。


最后:

只会调用这几个方法,进行字符串处理是还不够的,这几个方法只是以后用正则的常识。
大家也能够发现,在使用正则中,匹配规则最重要!!!也就是我写的这几个例子中。变量 regex 的内容是很重要的。即匹配规则!!!

下一步,就是我们学习正则的真正开始!!熟练使用匹配规则!!恰好,正则的规则也是在其它语言中通用的!!也就是说,在这里把正则学好了,在其它语言中只需要学会怎么去通过调用方法执行匹配规则就行了,即regex的内容是不变的!!,但是值得注意的是,这还得看其它语言实现正则实现得怎么样了,有些正则匹配规则,语言中是没有实现的!!

正则是程序员必须会的!!这也是一个程序员的标准!!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值