正则表达式-2(字符串切割)+(字符串按正则表达式替换)

一.字符串切割

超循环输出

 for(String s : arr)
		{
			System.out.println(s);
		}
	}

String [] arr=str.split(reg);

str:进行切割的字符串  reg:切割的标志

class StringQieGe 
{
	public static void main(String[] args) 
	{
		//splitDemo("ding,wang,li,wu",",");//逗号分割

        // splitDemo("ding    wang    li    wu"," +");////按多个空格进行分割

		//splitDemo("ding.wang.li.wu","\\.");//按点分割

		//splitDemo("esffdghhrzzsccccv","(.)\\1+");//按叠词进行分割.为了可以让规则的结果被重用
		                                         //可以将规则封装成一个组。用()完成。组的出现都有编号。
												 //从1开始。 想要使用已有的组可以通过  \n(n就是组的编号)的形式来获取的。
        splitDemo("esffddghhrzzscccvww","(.)\\1(.)\\2");

	}
	public static void splitDemo(String str,String reg)
	{
        String[] arr=str.split(reg);

        for(String s : arr)
		{
			System.out.println(s);
		}
	}
}

组和捕获

捕获组可以通过从左到右计算其开括号来编号。例如,在表达式 ((A)(B(C))) 中,存在四个这样的组:

1     ((A)(B(C)))
2     \A
3     (B(C))
4     (C)

组零始终代表整个表达式。


二.字符串按正则替换


str=str.replaceAll(reg,newStr);

reg:正则表达式(替换条件).  newStr(要替换的串); 

replaceAllDemo(str1,"(.)\\1+","$1");//将叠词部分替换成单个字符 JJJJ—->J      $1 代表组1
        

class StringTiHuan 
{
	public static void main(String[] args) 
	{
		String str="s12daff123135dsadasda4654654";

		//replaceAllDemo(str,"\\d{5,}","#");//\\d等价于[0,9];数字串长度超多5替换成#;

		String str1="dfssXJJJJdasddsab";

		//replaceAllDemo(str1,"(.)\\1+","&");//将叠词部分替换成&

		replaceAllDemo(str1,"(.)\\1+","$1");//将叠词部分替换成单个字符 JJJJ—->J      $1 代表组1
        
	}
	public static void replaceAllDemo(String str,String reg,String newStr)
	{
	    str=str.replaceAll(reg,newStr);
		System.out.println(str);
	}
}



你可能感兴趣的:(基础知识)