您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页(二十)正则表达式

(二十)正则表达式

来源:五一七教育网


前言:

        正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。

        许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由中的工具软件(例如和)普及开来的,后来在广泛运用于Scala 、PHP、C# 、Java、C++ 、Objective-c、Perl 、Swift、VBScript 、Javascript、Ruby 以及Python等等。正则表达式通常缩写成“regex”,有regexp、regex,有regexps、regexes、regexen。

1.概述:

        正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。

2.正则表达式体验:

需求:

        加入现在要求校验一个QQ号码是否正确,6位及20位之内,必须全部是数字。

/**正则表达式(regex)  :可以用一些规定的字符来制定规则,并用来经检验数据格式的合法性
 *
 */
public class regex_Demo1 {
    public static void main(String[] args) {
        //校验QQ号,必须全部是数字6-20位
        System.out.println(checkQQ("251410401102"));
        System.out.println(checkQQ("12841"));
        System.out.println(checkQQ("13929jfuhfuc"));
        System.out.println(checkQQ(null));
        System.out.println("==============================");
        System.out.println(checkQQ2("251410401102"));
        System.out.println(checkQQ2("12841"));
        System.out.println(checkQQ2("13929jfuhfuc"));
        System.out.println(checkQQ2(null));
    }
    public static boolean checkQQ2(String qq){
        //正则表达式
        return qq != null && qq.matches("\\d{6,20}");//只能是数字
    }
    public static boolean checkQQ(String qq) {
        //1、判断QQ号的长度是否满足要求
        if (qq == null || qq.length()<6||qq.length()>20) {
            return false;
        }
        //2、判断是否全部是数字,不是则返回false
        for (int i = 0; i <qq.length() ; i++) {
            char ch = qq.charAt(i);
            //判断这个字符是否不是数字,不是数字直接返回false
            if (ch<'0'||ch>'9'){
                return false;
            }
        }
        return false;
    }
}

3.正则表达式字符

3.1字符类(默认匹配一个字符)

 

3.2预定义的字符类(默认匹配一个字符)

 

3.3贪婪的量词(配合匹配多个字符)

 

3.4字符串对象提供了匹配正则表达式规则的API

 

 

4.正则表达式在字符串方法中的使用

 

5.代码演示:

public class regex_Demo2 {
    public static void main(String[] args) {
        //1.分割
        String name = "小路dhfadk蓉儿llvok武则天";
        String[] arrs =name.split("\\w+");
        for (int i = 0; i < arrs.length; i++) {
            System.out.println(args[i]);
        }
​
        String arrs2 = name.replaceAll("\\w+","  ");
        System.out.println(arrs2);
    }
}

6.正则表达式支持爬取信息

7.代码演示:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
​
//正则表达式爬取信息
public class regex_Demo3 {
    public static void main(String[] args) {
​
    //定义内容
    String rs = "黑马程序员JAVA,电话:020-123938,邮箱:2683857059@qq.com,黑马程序员python,电话:18765832633,020100323 邮箱:11231782@qq.com"
            +"黑马程序员CSS,电话:400-100-3233,邮箱:39184185@.qq.com";
    //定义爬取规则
    String regex="(\\w{1,30}@[a-zA-Z0-9]{2,20}(\\.[a-zA-Z0-9]{2,20}){1,2})| (1[3-9]\\d{9})" +
            "|(0\\d{2,6}-?\\d{5,20})|(400-?\\d{3,9}-?\\d{3,9})";//爬取邮箱和手机号
    //1、编译正则表达式成为一个匹配规则对象
    Pattern pattern = Pattern.compile(regex);
    //2、通过匹配规则得到一个匹配数据内容的匹配器对象
    Matcher matcher = pattern.matcher(rs);
    //3、通过匹配器去内容中爬取信息
    while(matcher.find()){
        System.out.println(matcher.group());
    }
    }
}

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务