正则表达式-java

来源:互联网 发布:python 入门教程 知乎 编辑:程序博客网 时间:2024/06/02 03:17
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;elseflag=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);}}

0 0
原创粉丝点击