Java学习笔记—正则表达式的用法

一、正则表达式中的一些重点语法

  • 重复次数限定符
代码说明等价于
{n}重复n次
{n,}重复至少n次
{n,m}重复n到m次
{1,}重复至少一次+
{0,}重复任意次*
{0,1}重复零次或一次?
  • 贪婪与懒惰
    1)贪婪匹配:当正则表达式中包含重复次数限定符时,通常的行为是(在使整个表达式能得到匹配的前提下)匹配尽可能多的字符。以这个表达式为例:a.*b,它将会匹配最长的以a开始,以b结束的字符串。如果用它来搜索aabab的话,它会匹配整个字符串aabab。这被称为贪婪匹配。
    2)懒惰匹配:在重复次数限定符后面加上号,如下表格
代码说明
+?重复至少一次,但尽可能少重复
*?重复任意次,但尽可能少重复
??重复零次或一次,但尽可能少重复
{n,m}?重复n到m次,但尽可能少重复
{n,}?重复n次以上,但尽可能少重复
  • 零宽断言
代码说明
(?=exp)匹配exp前面的位置
(?<=exp)匹配exp后面的位置
(?!exp)匹配后面跟的不是exp的位置
(?<!exp)匹配前面不是exp的位置

二、Java中正则表达式的使用

主要运用java.util.regex包下的两个类:Pattern类Matcher类

(一)利用正则表达式匹配字符

主要分以下两步:

第一步:使用Pattern类构建正则表达式,并开启相应模式

第二步:通过匹配引擎Matcher类去查找

public class Test
{
    public static void main(String[] args)
    {

        String str = "abcdefghijk12345678abcd1234"; // 待匹配字符串

        Pattern p = Pattern.compile("\\d{4}"); // 第一步:构建正则表达式

        Matcher m = p.matcher(str); // 第二步:构建匹配引擎

        System.out.println(m.matches()); // matches()的作用是匹配整个字符串是否符合正则表达式,这里不符合,返回false

        System.out.println(m.find()); // find()的作用是查找子字符串是否符合正则表达式,这里符合,返回true

        while(m.find()){
            System.out.println(m.group());//打印5678和1234,因为上文已经调用了一次m.find(),匹配了1234,所以从后面继续往下匹配
        }

    }

}

(二)利用正则表达式替换匹配的字符

public class Test
{
    public static void main(String[] args)
    {
        String strBefore = "其他字符abcd123456待替换字符123456abcd其他字符"; // 待匹配字符串
        // 【1】构建正则表达式
        Pattern p = Pattern.compile("待替换字符");
        // 【2】构建匹配引擎
        Matcher m = p.matcher(strBefore);
        // 【3】替换字符
        String strAfter = m.replaceAll("替换之后的字符");

        System.out.println(strAfter);// 打印出“其他字符abcd123456替换之后的字符123456abcd其他字符”
    }

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值