前端之家收集整理的这篇文章主要介绍了
正则表达式-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,"$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);
}
}