正则表达式

正则表达式用于操作字符串数据,通过一些特定的符号来体现的。

当对一个qq号效验时,需要长度5-15,只能是数字,0不能开头一般的写法

package com.monfolld.regex;

public class RegexDemo {
    public static void main(String[] args){
        /*需求:定义一个功能对qq号进行效验
        * 需求:长度5~15,只能是数字,0不能开头*/
        String qq="12345";
        checkQQ(qq);
    }
    public static void checkQQ(String qq){
        int len=qq.length();
        if (len>=5 && len<=15){
            if (!qq.startsWith("0")){
                try {
                    long l=Long.parseLong(qq);
                    System.out.println(l+":正确");
                }catch (NumberFormatException e){
                    System.out.println(qq+":含有非法字符");
                }
            } else {
                System.out.println(qq + "不能0开头");
            }
            }else{
            System.out.println(qq+":长度错误");
        }

    }
}

运用正则表达式

package com.monfolld.regex;

public class RegexDemo {
    public static void main(String[] args){
        String qq="12345";
        String regex="[1-9][0-9]{4,14}";//正则表达式
        boolean b=qq.matches(regex);
        System.out.println(qq+":");
    }

 常见的功能

package com.monfolld.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo2 {
    public static void main(String[] args){
        /*正则表达式对字符串常见操作
        * 1,匹配
        *       其实就是使用String类中的matches方法
        * 2.切割
        *       其实就是使用String类中的split方法
        * 3.替换
        *       其实使用的就是String类中的replaceAll方法
        * 4.获取
        *       将正则规则进行封装
        *       Pattern p=Pattern.compile("a+b");
        *       通过正则对象的matcher方法字符串相关联,获取要对字符串操作的匹配器对象Matcher
        *       Matcher m=p.matcher("aaaaab");
        *       通过Matcher匹配器对象的方法对字符串进行操作
        *       boolean b=m.matches();*/
        functionDemo_4();
    }
    public static void functionDemo_1(){
        //匹配手机号码是否正确
        String tel="15800001111";
        String regex="1[358]\\d{9}";//相当于 String regex="1[358][0-9]{9}";
        boolean b=tel.matches(regex);
        System.out.println(tel+":"+b);
    }
    public static void functionDemo_2(){
        /*String str="zhangsan        xioqiang             zhaoliu";
        String[] names=str.split(" +");*/
        /*String str="zhangsan.xioqiang.zhaoliu";
        String[] names=str.split("\\.");*/
        String str="zhangsanttttxioqiangmmmmmzhaoliu";
        String[] names=str.split("(.)\\1+");
        for (String name:names){
            System.out.println(name);
        }
    }
    public static void functionDemo_3(){
        String str="zhangsanttttxioqiangmmmmmmmzhaoliu";
        str=str.replaceAll("(.)\\1+","$1");
        System.out.println(str);
        String tel="15800001111";
        tel=tel.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
        System.out.println(tel);
    }
    public static void functionDemo_4(){
        String str="da jia hao ,ming tian bu fang jia!";
        String regex="\\b[a-z]{3}\\b";
        //将正则封装成对象
        Pattern p=Pattern.compile(regex);
        //通过正则对象获取匹配器对象
        Matcher m=p.matcher(str);
        //既然要获取三个字母组成的单词
        //查找find();
        while (m.find()){
        System.out.println(m.group());//获取匹配的子序列
        System.out.println(m.start()+":"+m.end());
    }}
}

例子

package com.monfolld.regex;

import java.util.TreeSet;

public class RegexTest {
    public static void main(String[] args){
        /*
        * 1.治疗口吃:我我...我我..我我我要...要要要要....要要要要..学学学学...学学编编...程程程程
        * 2.对ip第hi排序
        * 3.对邮件地址校验*/
        test_3();
    }
    public static void test_1(){
        String str="我我...我我..我我我要...要要要要....要要要要..学学学学...学学编编...程程程程";
        //1.将字符串中.去掉。用替换
        str=str.replaceAll("\\.+","");
        System.out.println(str);
        //2.替换叠词
        str=str.replaceAll("(.)\\1+","$1");
        System.out.println(str);
    }
    /*ip地址排序
    *
    * 192.168.10.34    127.0.0.1   3.3.3.3  105.70.11.55 */
    public static void test_2(){
        String ip_str="192.168.10.34    127.0.0.1   3.3.3.3  105.70.11.55";
        //1.将ip地址切出
        /*String[] ips=ip_str.split(" +");
        TreeSet<String> ts=new TreeSet<String>();
        for (String ip:ips){
            //System.out.println(ip);
            ts.add(ip);
        }
        for (String ip:ts){
            System.out.println(ip);
        }
*/
        //1.为了让ip可以按照字符串顺序比较,只要让ip的每一段的位数都相同
        //所以,补零,按照每一位所需要做多0进行补充,每一段都加两个0
        ip_str=ip_str.replaceAll("(\\d+)","00$1");
        System.out.println(ip_str);
        //然后每一段保留数字3位
        ip_str=ip_str.replaceAll("0*(\\d{3})","$1");
        System.out.println(ip_str);
        String[] ips=ip_str.split(" +");
        TreeSet<String> ts=new TreeSet<String>();
        for (String ip:ips){
            //System.out.println(ip);
            ts.add(ip);
        }
        for (String ip:ts){
            System.out.println(ip.replaceAll("0*(\\d+)","$1"));
        }
    }
    public static void test_3(){
        String mail="abcd1@sina.com";
        String regex="[a-zA-Z0-9_]+@[a-zA-Z0-9]+(\\.[a-zA-Z]{1,3})+";
        boolean b=mail.matches(regex);
        System.out.println(mail+":"+b);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值