正则表达式
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){} //}