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