欢迎光临
我们一直在努力

掌握正则表达式:从入门到精通的实战指南

在这里插入图片描述

文章目录

    • 🌍一.正则表达式
      • ❄️1.为什么学习正则表达式
      • ❄️ 2.基本介绍
      • ❄️3.分析底层实现
    • 🌍二.正则表达式的语法
      • ❄️1.字符匹配
      • ❄️2.量词
      • ❄️3.定位符
      • 4.分组和引用
      • ❄️6.非贪婪匹配
      • ❄️7.分支结构
      • ❄️实际应用
    • 🌍 三.正则标表达式的三个常用类
      • ❄️1. Pattern类
      • ❄️2.Matcher类
      • ❄️3.PatternSyntaxException
    • 🌍 四.分组,捕获,反向引用
      • ❄️提出问题
      • ❄️了解正则表达式的几个概念
      • ❄️经典的结巴程序
    • 🌍五.String类中使用正则表达式
      • ❄️1.替换功能
      • ❄️2.判断功能
      • ❄️3.分割功能
      • ❄️4.演示代码
    • 🌍六.Java正则表达式大全
      • ❄️一、校验数字的表达式
      • ❄️二、校验字符的表达式
      • ❄️三、特殊需求表达式
    • 🌍七.题目练习
      • ❄️第一题
      • ❄️第二题
      • ❄️第三题

🙋‍♂️ 作者:@whisperrr.🙋‍♂️ 🎉 其他专栏:零基础学Mysql 🎉 💥 标题:掌握正则表达式:从入门到精通的实战指南💥 ❣️ 寄语:比较是偷走幸福的小偷❣️

🌍一.正则表达式

❄️1.为什么学习正则表达式

我们先来看几个问题。

  • 给你一个字符串(或文章),请你找出所有四个数字连在一起的子串?
  • 给你一个字符串(或文章),请你找出所有四个数字连在一起的子串,并且这四个数字要满足:第一位与第四位相同,第二位与第三位相同,比如1221,5775
  • 请验证输入的邮件,是否符合电子邮件格式.
  • 请验证输入的手机号,是否符合手机号格式

解决之道,就在其中—–正则表达式。

❄️ 2.基本介绍

正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”)。正则表达式用于执行字符串的搜索和/或替换操作,常用于数据验证、数据抓取、数据整理等场景。 简单的说:正则表达式是对字符串执行模式匹配的技术。

❄️3.分析底层实现

  • matcher.find()
  • matcher.find()完成的任务

  • 根据指定的规则,定位满足规则的子字符串(比如1234)
  • 找到后,将 子字符串的索引位置记录到matcher对象的属性int [] groups;
  • groups[0] = 0, 把该 子字符串的结束索引 + 1 记录到groups[1] = 4;
  • 同时记录oldlast 的值为 子字符串的结束索引 + 1即为4;
  • matcher.group(0)
  • public String group(int group) {


    if (first < 0)
    throw new IllegalStateException(\”No match found\”);
    if (group < 0 || group > groupCount())
    throw new IndexOutOfBoundsException(\”No group \” + group);
    if ((groups[group*2] == 1) || (groups[group*2+1] == 1))
    return null;
    return getSubSequence(groups[group * 2], groups[group * 2 + 1]).toString();
    }

    小结
    1.如果正则表达式有()分组
    2.group(0)代表匹配的子字符串
    2.group(1)代表匹配的子字符串的第一组
    2.group(2)代表匹配的子字符串的第二组

    在这里插入图片描述

    🌍二.正则表达式的语法

    正则表达式(Regular Expression)是一种强大的文本处理工具,它通过定义一种规则来对字符串进行模式匹配、搜索和替换。下面我会详细讲解正则表达式的各个方面。

    ❄️1.字符匹配

    • .:匹配除换行符之外的任意单个字符。
    • [abc]:匹配方括号内的任意一个字符(a、b 或 c)。
    • [^abc]:匹配不在方括号内的任意一个字符。
    • [a-z]:匹配从 a 到 z 的任意一个小写字母。
    • [A-Z]:匹配从 A 到 Z 的任意一个大写字母。
    • [0-9]:匹配从 0 到 9 的任意一个数字。
    • \\d:匹配一个数字字符。等价于 [0-9]。
    • \\D:匹配一个非数字字符。等价于 [^0-9]。
    • \\w:匹配包括下划线的任何单词字符。等价于 [A-Za-z0-9_]。
    • \\W:匹配任何非单词字符。等价于 [^A-Za-z0-9_]。
    • \\s:匹配任何空白字符,包括空格、制表符、换行符等等。
    • \\S:匹配任何非空白字符。

    ❄️2.量词

    • *:匹配前面的子表达式零次或多次。
    • +:匹配前面的子表达式一次或多次。
    • ?:匹配前面的子表达式零次或一次。
    • {n}:n 是一个非负整数,匹配确定的 n 次。
    • {n,}:至少匹配 n 次。
    • {n,m}:至少匹配 n 次且最多匹配 m 次。

    ❄️3.定位符

    • ^:匹配输入字符串的开始位置。
    • $:匹配输入字符串的结束位置。
    • \\b:匹配一个单词边界,即字与空格间的位置。
    • \\B:匹配非单词边界。

    4.分组和引用

    • (exp):匹配 exp 并捕获文本到自动命名的组里。
    • (?:exp):匹配 exp 但不捕获匹配的文本。
    • \\n:引用编号为 n 的捕获组匹配的文本。

    ❄️6.非贪婪匹配

    默认情况下,量词都是贪婪的,会尽可能多地匹配字符。在量词后面加上 ? 可以使其变为非贪婪的,即尽可能少地匹配字符。

    • *?:非贪婪地匹配任意次。
    • +?:非贪婪地匹配一次或多次。
    • ??:非贪婪地匹配零次或一次。
    • {n,m}?:非贪婪地至少匹配 n 次且最多匹配 m 次。

    ❄️7.分支结构

    可以使用 | 来表示分支结构,匹配符号左边的子表达式或右边的子表达式。

    • foo|bar:匹配 “foo” 或 “bar”。

    ❄️实际应用

    在不同的编程语言中,正则表达式的语法和功能可能会有所不同,但基本概念是通用的。以下是一些使用正则表达式的例子:

    package com.lrx.regexp;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    /**
    * @author 刘
    * @version 1.0
    */

    public class RegExp08 {


    public static void main(String[] args) {

    String content = \”https://www.bilibili.com/video/BV1oDU4YYEgT/?spm_id_from=333.1007.tianma.4-4-14.click\”;
    String regStr = \”^((http|https)://)?([\\\\w-]+\\\\.)+[\\\\w-]+([\\\\w-#%&?.=/]*)?$\”;
    Pattern pattern = Pattern.compile(regStr);
    Matcher matcher = pattern.

    赞(0)
    未经允许不得转载:171主机测评 » 掌握正则表达式:从入门到精通的实战指南
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址