正则表达式-java

正则表达式在字符串操作中的应用
package regexUtilTest;
import java.util.TreeSet;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexString {
	//1 匹配
	public boolean Matches(String src, String regex){
		boolean flag=false;
		if(src.matches(regex))
			flag=true;
		else
			flag=false;
		return flag;
	}
	//切割
	public String [] Split(String src,String reg){
		String a[] = src.split(reg);
		for (String string : a) {
			System.out.println(string);
		}
		return a;
	}
	
	//替换
	public String Replace(String src,String regex,String newstr){
		String newstring = 	src.replaceAll(regex, newstr);	
		System.out.println(newstring);
		return newstring;
	}
	
	
	

	//获取
	public void Get(String src,String regex){
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(src);
		while(m.find()){
			System.out.println(m.group());
			System.out.println(m.start()+":"+m.end());
			
		}
		
	}
	
	public static void main(String[] args) {
		RegexString regexString = new RegexString();
		String qq= "^[1-9]\\d{5,14}$";  
		String phone = "^(\\+86 )?1[358]\\d{9}$";  
		String str="wangtianyieeexiaolieeeezhaotianyugggglkjkj";
		String regex="(.)\\1+";
		String src = "13533828340";
		
		
		regexString.Replace(str, regex, "#");
		
		regexString.Replace(str, regex, "$1");
		
		//需求 将手机号码中间几位数屏蔽
		regexString.Replace("15802397891", "(\\d{3})(\\d{4})(\\d{4})", "$1****$3");
		//regexString.Split(str, regex);
		
		
		//需求:取出3个字母的单词
		String src1="cheng xu yuan , yi sheng hei";
		String regex1="\\b[a-zA-Z]{3}\\b";
		regexString.Get(src1, regex1);
		
		//需求 替换叠词
		String question1 ="aaa....ccccc.........dddd.......eeeee....ccccc........ggggg.....eeewwwww.....";
		//首先替换掉.
		String q1=regexString.Replace(question1, "\\.+","" );
		//然后替换掉重复字符
		regexString.Replace(q1, "(.)\\1+", "$1");
		
		//需求:匹配ip分租    并 按照ip 排序 
		String ip = "172.168.5.34  22.22.245.123   33.22.33.1   2.43.56.113 224.22.3.53 ";
		//考虑到要排序可以用TreeSet排序 但是22.22.245.123 如果用treeset排序 就会比172.....1开头的打大 所以需要把所有ip转换成3位数 
		//因为ip每个.间的位数不同 将每个数字前加上两个0 则ip至少是3位以上
		String ip1 = ip.replaceAll("(\\d+)", "00$1");
		//然后将多位的ip替换成3位
		ip1 = ip1.replaceAll("0*(\\d{3})", "$1");
		System.out.println(ip1);
		//排序
		String ips[]=regexString.Split(ip1, " +");
		TreeSet<String> ts =new TreeSet<String>();	
		for (String string : ips) {
			ts.add(string);
		}
		//输出
		System.out.println("---------------");
		for (String string : ts) {
			string=string.replaceAll("0*(\\d{1,3})", "$1");
			System.out.println(string);
		}
		
		//匹配邮箱  注意下划线
		String mail = "eico@sin-omcn.com";
		String regexMail="(w{3}\\.)?[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_]+)+";
		String regexMail2="\\w+@\\w+\\-\\w+(\\.\\w+)+";	
		
		System.out.println(mail.matches(regexMail));
		System.out.println(mail.matches(regexMail2));
		

		String http = "^'http://\\w+(\\.\\w+)+(/[a-zA-Z0-9_-]+)*(\\.\\w+)*'$";
		String httpsrc="\"http://www.bilibili.com/html/ma_pc.html\"";
		System.out.println(httpsrc);
		System.out.println(httpsrc.matches(http));
		
		//需求:将a3ab2de5将数字之间的字符重复数字那么多次
		String qunaer = "a3ab2de5";
		String relexq="([a-z]+\\d)";
		//1在每个组之间添加一个#号便于分租
		String qunaer2=qunaer.replaceAll(relexq, "$1#");
		//2把它分成多个组
		String[] b=qunaer2.split("#");
		//3new一个可变长度的builder对象
		StringBuilder finalbuilder=new StringBuilder();
		for (String string : b) {
			Pattern p = Pattern.compile("\\d");
			Matcher m = p.matcher(string);
			int copy=0;
			while(m.find()){
				copy = Integer.parseInt(m.group());
				System.out.println(copy);
			}
			String newstr=string.replaceAll("([a-z]+)\\d","$1");
			StringBuilder builder =new StringBuilder(newstr);
			for (int j = 0; j < copy-1; j++) {					
				builder.append(newstr);
			}
			finalbuilder = finalbuilder.append(builder);
		}
		System.out.println(finalbuilder);
		
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值