当前位置: 首页 > news >正文

(二十)正则表达式

目录

前言:

1.概述:

2.正则表达式体验:

3.正则表达式字符

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

5.代码演示:

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

7.代码演示:


前言:

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

        许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开来的,后来在广泛运用于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 邮箱:1189231782@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());
    }
    }
}

相关文章:

  • 多节点Linux环境打造
  • Spring Boot配置文件数据也可以轻松加密?
  • 第十三届蓝桥杯C++B组省赛 J 题——砍竹子(AC)
  • 拓扑排序 (算法思想+图解+模板+练习题)
  • SAP FICO常用报表和事务码大全
  • 2. PyTorch简介:使用PyTorch训练第一个神经网络
  • LeetCode 295. 数据流的中位数(C++)*
  • MySQL表的增删查改
  • 完全二叉树与堆(包含STL堆的用法)
  • 用HTML写一个2023跨年动画代码(烟花+自定义文字+背景音乐+雪花+倒计时)
  • Electron打包图标不显示解决方案
  • Synchronized锁原理及 ConcurrentHashMap
  • OpenCV学习
  • 【位图】面对海量数据,如何压缩空间?定位数据?
  • 【Linux】进程创建、终止、等待、替换、shell派生子进程的理解…
  • 《L1 - 5分合集总结》
  • CSAPP Shell Lab
  • 13.0、Linux-安装Tomcat、以及防火墙常用命令
  • html实现酷炫的公司年会抽奖(附源码)
  • 自定义启动器
  • 传染病防治法修订草案提请三审,拟加强医疗机构疾控能力建设
  • 洗冤录·巴县档案|道咸年间一起家暴案
  • 视频丨伊朗阿巴斯港一处油罐发生高强度爆炸:造成大面积破坏,伤亡不明
  • 上海虹桥至福建三明直飞航线开通,飞行时间1小时40分
  • 中法共创《海底两万里》,演员保剑锋重回戏剧舞台演船长
  • 面对面倾听群众意见建议,及时回应解决群众“急难愁盼”问题!龚正在基层开展下访活动,调研城市更新