正则表达式

import org.junit.Test;
import com.iit.util.StrUtils;
import org.junit.Test;

public class TestReplace0 {
    String src1="2022,I'm study java17";
    String src2="1985年windows来了,2000年windowME发布;目前是Windows10";
    String src3="abbacffcefggfghhjj";
    String src4="Awin7,BwinXp,Awindow Cwin";
    String src5="12人买34斤白菜花567元8角9分";


    @Test
    public void test1(){
        String title ="找出src1中所有数字";
        String rule="\\d";
        StrUtils.findAll(title,src1,rule);


    }

    @Test
    public void test2(){
        String title1="将src1中所有空白替换为*";
        String s1=src1.replaceAll("\\s","*");
        String title2 ="将src1中所有非空白替换为*";
        String s2=src1.replaceAll("\\S","*");
        System.out.println("s1="+s1);
        System.out.println("s2="+s2);
    }
    @Test
    public void test3(){
        String title1="将src1中所有单词字符替换为*";
        String s1= src1.replaceAll("\\w","*");
        String title2="将src1中的所有非单词字符替换为*";
        String s2=src1.replaceAll("\\W","*");
        System.out.println("s1="+s1);
        System.out.println("s2="+s2);
    }
    @Test
    public void test4(){
        String title1="将src1中所有数字字符替换为*";
        String s1= src1.replaceAll("\\d","*");
        String title2="将src1中的所有非单词字符替换为*";
        String s2=src1.replaceAll("\\D","*");
        System.out.println("s1="+s1);
        System.out.println("s2="+s2);

    }
    @Test
    public void test5(){
        String title1="将src1中所有字符替换为*";
        String s1= src1.replaceAll(".","*");
        System.out.println("s1="+s1);
    } @Test
    public void test6(){
        String title1="将src1中指定字符替换为*";
        String s1= src1.replaceAll("[20ja]","*");
        System.out.println("s1="+s1);
        String title2="将src1中所有数字 替换为*";
        String s2= src1.replaceAll("[0123456789]","*");
        System.out.println("s2="+s2);
        String title3="将src1中所有数字和字母替换为*";
        String s3= src1.replaceAll("[0-9a-zA-Z]","*");
        System.out.println("s3="+s3);
    }public void test6b(){
        String title1="将src1中不是【1234win】的字符替换为*";
        String s1= src2.replaceAll("[^1234win]","*");
        System.out.println("s1="+src2);
        System.out.println("s1="+s1);

    }
    @Test
    public void test7(){
        String title1="找出src1中所有两个数字";
       StrUtils.findAll(title1,src1,"\\d{2}");
       String title2="找出src1中所有连续2-4 个数字";
       StrUtils.findAll(title2,src1,"\\d{2,4}");
       String title3="找出src1中所有年份";
       StrUtils.findAll(title3,src1,"\\d{4}");
    }@Test
    public void test8(){
        String title1="找出src3中0个或者1个数字替换为*";
        String s1=src3.replaceAll("\\d?","*");
        System.out.println("s0="+src3);
        System.out.println("s1="+s1);
    }
    @Test
    public void test9(){
        String title1="将src中的【来了】和【发布】更换为*";
        String s1 =src2.replaceAll("来了" ,"*");
        System.out.println("s1="+s1);
    }
    @Test
    public void test10(){
        String title1="将src中的[win|20]更换为*";
        String s1 =src2.replaceAll("[win|20]" ,"*");
        System.out.println("s0="+src2);
        System.out.println("s1="+s1);
    }
    @Test
    public void test11(){
        String title1="在src3中找出所有满足ab+条件的字符";
        StrUtils.findAll(title1,src3,"ab+");
        StrUtils.findAll(title1,src3,"(ab)+");

    }
    @Test
    public void test12(){

        String title1="在src3中ab开头的字符替换为*";
       String s1 =src3.replaceAll(" ^ab","*");
        System.out.println("s0="+src3);
        System.out.println("s1="+s1);
        String title2="在src3中ab结尾的字符替换为*";
       String s2 =src3.replaceAll("ab$","*");
        System.out.println("s2="+s2);
        String title3="在src3中所有ab的字符替换为*";
       String s3 =src3.replaceAll("^ab$","*");
        System.out.println("s3="+s3);


    }
    @Test
    public void test13(){
        String title1="在src4中单词win的字符替换为*";
        String s1 =src4.replaceAll(" win\\B","*");
        System.out.println("s0="+src4);
        System.out.println("s1="+s1);

    }
    @Test
    public void test14(){
        String title1="在src4中单词win替换为*,不区分大小写";
        String s1 =src4.replaceAll("(?i) win","*");
        System.out.println("s0="+src4);
        System.out.println("s1="+s1);


    }
    @Test
    public void test15(){
        String title1="在src3中单词【ab】替换为*,b要尽量多";
        String s1 =src3.replaceAll("ab","*");
        System.out.println("s0="+src3);
        System.out.println("s1="+s1);


    } @Test
    public void test16(){
        String title="在src5中与金额相关的数字提取出来";
        StrUtils.findAll(title,src5,"\\d(?=元|角|分)");


    }
 @Test
    public void test17(){
        String title1="以A打头的win替换为*";
String s1=src4.replaceAll("(?<=A)=win","*");
     System.out.println("s0="+src4);
     System.out.println("s1="+s1);

    }
    @Test
    public void test18(){
        String title=" 将src5中的金额和数字取出来并以'金额-单位'形式打印出来";
        StrUtils.findAll(title,src5,"(?<g1>\\d+)(?<g2>[分元角])");
//现在是当作整体来处理的

    }
    @Test
    public void test19(){
        String title=" 将src3中满足'ABBA'模式的字符串提取出来";
        StrUtils.findAll(title,src3,"(.)(.)\\2\\1");
//现在是当作整体来处理的

    }

    }

  

package com.iit.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StrUtils {
    public static List<String>findAll(String title,String src,String regex){
        System.out.println("标题"+title);
        System.out.println("s0="+src);
        Pattern p=Pattern.compile(regex,Pattern.DOTALL);
        Matcher m=p.matcher(src);
        List<String>list=new ArrayList<>();
        while(m.find()){
            String findStr=m.group(0);
            list.add(findStr);
            if(m.groupCount()>=2){
                String g1=m.group(1);
                String g2=m.group(2);
                String msg= String.format("%s-%s",g1,g2);
                System.out.println("输出:"+msg);

            }
        }
        System.out.println("s1="+ Arrays.toString(list.toArray()));

        return list;


    }}
//    public static  String currentDateTime(String format){}
//    public static boolean isBlank(String src){}
//}

  

posted @ 2022-05-30 22:00  薇薇酱qwq  阅读(9)  评论(0编辑  收藏  举报