正则表达式的使用Demo1--4个主要功能

package com.regex;

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

public class RegexDemo {

    public static void main(String[] args) {
        /*
         * 1,匹配
         * 使用String类中的matches
         */
        //匹配演示
        functionDemo_1();
        /*
         * 2,切割
         * 使用String类中的split
         */
        //切割演示
        functionDemo_2();
        /*
         * 3替换
         * 使用String类中的replaceAll
         */
        functionDemo_3();
        /*
         * 4获取
         * 其他三个功能内部最终使用的都是Pattern正则表达式对象
         * 现在需要其他功能的时候,字符串String类中没有对应的方法,只能找Pattern
         * Pattren对象的使用原理:
         * 1.将正则表达式字符串编译成正则对象pattern.
         * 2.通过pattern对象获取Matcher对象(匹配器对象)。
         * 3.通过匹配器对象对字符串进行规则的匹配,结果都在匹配器中
         * 4.通过匹配器对象的功能获取结果。
         * Pattern p = Pattern.compile("a*b");
           Matcher m = p.matcher("aaaaab");
           boolean b = m.matches();
         * 
         */
        functionDemo_4();
    }

    private static void functionDemo_4() {
        String str = "da jia zhu yi le,ming tian fang jia le!";
        String regex1 = "\\b[a-zA-Z]{3}\\b";//取出由三个字母组成的单词。
        //1.获取正则表达式对象。
        Pattern p = Pattern.compile(regex1);
        //2.和要操作的字符串关联,获取对应的匹配器对象。
        Matcher m = p.matcher(str);
        System.out.println(str);
        while(m.find())
        {
            System.out.println(m.start()+"..."+m.group()+"..."+m.end());
            System.out.println(str.substring(m.start(), m.end()));
        }
    }

    public static void functionDemo_3() {
        System.out.println("多个替换为一个");
        String str = "wert@@@@@@yuios#####dfgh";
        String regex = "(.)\\1+";
        //在参数列表中,其他参数要使用之前参数中的规则的组,需要使用$组编号
        str =str.replaceAll(regex, "$1");
        System.out.println(str);
        System.out.println("手机号打码");
        String s="13964233168";
        s=s.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
        System.out.println(s);
    }

    public static void functionDemo_2() {
        System.out.println("切割演示");
        //String str = "zhangsan       lisi    wangwu" ;
        //String regex = " +";//一个或多个空格
//      String str = "zhangsan.lisi.wangwu";
//      String regex="\\.";//直接用点是任意匹配
        String str = "ert###yuixkkkkcvbn";//连续的叠词作为切割的标准
        //正则规则的复用,想复用先封装
        //用小括号()封装,有编号,从1开始。规则中被()封装的称之为组
        //直接通过编号对组进行调用
        //()\\1在使用已有的第一组内容。原则先有组,才可以使用对应的编号
        /*
         * 捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组: 

        1     ((A)(B(C))) 
        2     \A 
        3     (B(C)) 
        4     (C) 
        组0始终表示整个表达式
         */
        String regex="(.)\\1+";//使用已有的第一组规则

        String[] strs = str.split(regex);
        for(String s:strs)
        {
            System.out.println("-"+s+"-");
        }

    }

    public static void functionDemo_1() {
        /*
         * 匹配手机号
         * 要求:第一位为1,第二位358,一共11位
         */
        System.out.println("匹配演示");
        String str = "18600002346";
        //第一位为1,第二位在358中选一个,之后连续9个任意数字
        String regex = "1[358]\\d{9}";
        boolean b= str.matches(regex);
        System.out.println(str+":"+b);

    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以参考下面的代码进行java字符串按正则表达式解析:String str = "This is a demo string"; Pattern p = Pattern.compile("\\w+"); Matcher m = p.matcher(str); while (m.find()) { System.out.println(m.group()); } ### 回答2: 在Java中,可以使用正则表达式解析字符串。解析字符串的过程包括查找、提取和替换符合特定模式的文本。 首先,我们需要使用java.util.regex包中的类来处理正则表达式。主要使用的类是Pattern和Matcher。 Pattern类是正则表达式的编译表示。通过使用Pattern.compile()方法,我们可以将正则表达式编译为一个Pattern对象。Matcher类则是Pattern对象的匹配器。我们可以使用Pattern.matcher()方法来创建一个Matcher对象,然后使用Matcher的一系列方法进行匹配。 例如,假设我们想要从一个字符串中提取所有的邮箱地址。我们可以使用正则表达式来定义邮箱地址的模式。可以使用以下代码实现: String text = "我的邮箱地址是:tom@example.com, 你可以给我发邮件。"; String pattern = "\\w+@\\w+\\.\\w+"; Pattern compiledPattern = Pattern.compile(pattern); Matcher matcher = compiledPattern.matcher(text); while (matcher.find()) { String email = matcher.group(); System.out.println(email); } 运行上述代码,结果将输出:tom@example.com 在这个例子中,首先编译了一个模式为"\\w+@\\w+\\.\\w+"的正则表达式。该模式用于匹配以字母、数字或下划线开头,后面跟着@符号,再后面是一个或多个字母、数字或下划线,最后是一个点和一个或多个字母、数字或下划线的字符串。 然后,我们使用Matcher的find()方法在文本中查找该模式的匹配项。当找到匹配项时,我们可以使用Matcher的group()方法获取匹配项的字符串表示,并进行后续处理。 总结来说,Java字符串按正则表达式解析可以通过Pattern和Matcher类来实现。通过定义和编译正则表达式,然后使用Matcher的方法进行匹配和处理,我们可以提取和操作字符串中符合特定模式的文本。 ### 回答3: Java中可以使用正则表达式解析字符串,实现字符串的拆分、匹配和替换等功能。下面是一个简单的示例: import java.util.regex.Matcher; import java.util.regex.Pattern; public class RegexDemo { public static void main(String[] args) { String input = "Hello, 2021! Welcome to Java Regular Expression!"; String pattern = "[0-9]+"; // 创建 Pattern 对象 Pattern p = Pattern.compile(pattern); // 创建 Matcher 对象 Matcher m = p.matcher(input); // 查找字符串中匹配正则表达式的部分 while (m.find()) { // 打印匹配到的部分 System.out.println("匹配到的字符串为:" + m.group()); } // 替换字符串中的匹配部分 String replaced = m.replaceAll("*"); System.out.println("替换后的字符串为:" + replaced); } } 上述代码中,我们使用正则表达式"[0-9]+",表示匹配一个或多个数字。然后我们将该正则表达式编译成Pattern对象,并利用Matcher对象对输入字符串进行匹配。 通过循环调用Matcher的find()方法,可以查找字符串中所有匹配正则表达式的部分。每次调用find()方法后,可以通过调用group()方法获取匹配到的字符串,并进行相应的处理。 代码的最后,我们还使用了Matcher的replaceAll()方法,将匹配到的部分替换为"*",并打印出替换后的字符串。 通过使用正则表达式,我们可以方便地对字符串进行拆分、匹配和替换等操作,实现更复杂的字符串处理功能
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值