正则表达式的介绍以及常见的应用

正则表达式的介绍

我们先从案例开始:B:案例演示
需求:校验qq号码.
1:要求必须是5-15位数字
2:0不能开头

a:非正则表达式实现
    用户输入为一个字符串,需要将每一个字符截取出来,然后遍历时进行判断每一个字符是否符合规则,过于繁琐

b:正则表达式实现 
只需要写一个规则就可以了(` String  strRgex="[1-9][0-9]{4,14}";`)

正则表达式概念:是指一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。其实就是一种规则。有自己特殊的应用。

常用的正则格式:

[abc] a、b 或 c(简单类) 
[^abc] 任何字符,除了 a、b 或 c(否定) 
[a-zA-Z] a到 z 或 A到 Z,两头的字母包括在内(范围) 
[0-9] 0到9的字符都包括

. 任何字符。我的就是.字符本身,怎么表示呢? \.
\d 数字:[0-9]
\w 单词字符:[a-zA-Z_0-9]
	
X? X,一次或一次也没有 比如""空串 就是没有
X* X,零次或多次  大于等于1次 都算多次
X+ X,一次或多次
X{n} X,恰好 n 次 
X{n,} X,至少 n 次 
X{n,m} X,至少 n 次,但是不超过 m 次 

案例:对邮箱账号进行判断

package org.westos.mydemo;

import java.util.Scanner;

public class Text2 {
    //1、请编写程序,校验键盘录入的电子邮箱是否合法,并测试
    public static void main(String[] args) {
        System.out.println("请输入待测的邮箱");
        Scanner sc = new Scanner(System.in);
        String str = sc.nextLine();
        // 邮箱的正则 6~18个字符,可使用字母、数字、下划线,需以字母开头
        String emailRgex = "\\w{6,18}@[a-z1-9]{2,10}\\.(com|net|cn|org)";
        boolean b = str.matches(emailRgex);
        System.out.println(b);
        if (b) {
            System.out.println("登陆成功");
        }else{
            System.out.println("登录失败");
        }
    }
}


正则的切割功能:split();
public class Text1 {
    public static void main(String[] args) {
        String str = "as123dadsa123dsdasd123asdasd132131asd";
        String[] split = str.split("[0-9]+");//根据正则表达式切去(一个或多个数字)
        StringBuffer sb = new StringBuffer();//用stringbuffer存储一会的字符串数组元素
        for (int i = 0; i < split.length; i++) {//遍历字符串数组

            sb.append(split[i]);//将每一个元素存储到stringbuffer中

        }
        System.out.println(sb);

    }
}
正则表达式的替换功能

通过 replaceAll方法实现

public class Text1 {
    public static void main(String[] args) {
        String str = "as123dadsa123dsdasd123asdasd132131asd";
        String s = str.replaceAll("[0-9]+", "*");//更具柜子找到之后替换成“*"
        System.out.println(s);
    }
}

正则表达式的提取功能

Pattern和Matcher的结合使用

使用的是 find()方法 和 group()方法 注意一定要先使用find()方法先找到 才能用group()方法获取出来

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

    public class Text1 {
        public static void main(String[] args) {
            String str2="继续使用即代表您同意我们的<a href=\"https://accounts.firefox.com/legal/terms\">使用条款</a>和<a href=\"https://accounts.firefox.com/legal/privacy\">隐私政策</a>";
            Pattern compile = Pattern.compile("http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+");
            Matcher matcher = compile.matcher(str2);
            if(matcher.find()){
                System.out.println(matcher.group());
            }
        }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值