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

JAVA深化篇_42—— 正则表达式

3 正则表达式

3.1正则表达式介绍

3.1.1 什么是正则表达式

正则表达式,又称规则表达式。(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),是计算机科学的一个概念。正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。

3.1.2 正则表达式的作用

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。使用特殊语法来表示字符类、数量限定符和位置关系,然后用这些特殊语法和普通字符一起表示一个模式。

3.1.3 正则表达式特点

🔴 灵活性、逻辑性和功能性非常的强;

🟢 可以迅速地用极简单的方式达到字符串的复杂控制

🟡 对于刚接触的人来说,比较晦涩难懂

3.2Java 中正则表达式的使用

在 Java 中正则表达式为 String 类型被验证的内容同样为 String 类型。通过 **String 类中的 matches 方法**实现内容的匹配校验。

如:“被验证内容”.matches(“正则表达式”)

3.3正则表达式语法规则

正则表达式语法规则:[内容限定]{长度限定}

3.3.1 内容限定

在定义限定内容规则时,如果没有指定长度限定,那么默认长度为 1。

3.3.1.1 单个字符限定

[a]:表示当前内容必须是字母 a

3.3.1.2 范围字符限定

[a-z0-9]:表示内容可以是 a-z 之间的任意字母或者 0-9 之间的任意数字,不分先后。

3.3.1.3 取反限定

[^abc]:表示内容不能为a或b或c

3.3.2 长度限定

在正则表达式中通过{ }来限定内容长度。

固定长度:{固定长度值}

范围长度:{最小长度值,最大长度值}

[a-z]{5}:表示内容范围为小写字母 a 到 z 且长度必须为 5

[a-z]{2,8}:表示内容范围为小写字母 a 到 z 且长度在 2 到 8 之间,包含 2 与 8

[a-z]{2,}:表示内容范围为小写字母 a 到 z 且最小长度为 2,最大长度无限制

[a-z]{0,2}:表示内容范围为小写字母 a 到 z 且最小长度为 0,最大长度为 2

3.3.3 长度限定符号

长度限定符号是指通过预定义符号来完成长度限定。

?:零次或一次。等同于{0,1}

+:一次或多次。等同于{1,}

*:零次或多次。等同于{0,}

3.3.4 预定义字符

在正则表达式中可以通过一些预定义字符来表示内容限定。目的是为了简化内容限定的定义。

常见的预定义字符:

字符 描述
\d匹配一个数字字符,等价于[0-9]。
\D匹配一个非数字字符,等价于[ ^0-9]。
\n匹配一个换行符。
\r匹配一个回车符。
\s匹配任何空白字符,包括空格、制表符、换页符等等。
\S匹配任何非空白字符。
\t匹配一个制表符。
\w匹配包括下划线的任何单词字符。等价于“[A-Za-zO-9 ]”。
\W匹配任何非单词字符。等价于“[ ^A-Za-z0-9 ]”。

3.3.5 正则表达式的组合定义

在正则表达式中可以通过多个内容限定与长度限定来组合定义。

示例:

必须是以字母开头,最少长度为 4,最大长度为 8。

请添加图片描述

校验带有区号的电话号码的正则表达式

请添加图片描述

3.4常见的正则表达式

请添加图片描述


http://www.kler.cn/news/134224.html

相关文章:

  • 14 Go的类型转换
  • X3DAudio1_7.dll丢失原因,X3DAudio1_7.dll丢失怎样解决分享
  • RabbitMQ消息的可靠性
  • 单元测试实战(三)JPA 的测试
  • 【c++随笔13】多态
  • 力扣174. 寻找二叉搜索树中的目标节点(java,二叉搜索树的性质的运用)
  • vscode 创建 运行c++ 项目
  • 一文了解Word2vec 阐述训练流程
  • 第7天:信息打点-资产泄漏amp;CMS识别amp;Git监控amp;SVNamp;DS_Storeamp;备份
  • VBA之Word应用:文档(Document)的书签
  • 【Python数据结构与算法】——(线性结构)精选好题分享,不挂科必看系列
  • 函数式编程框架 functionaljava 简介
  • ClickHouse数据一致性
  • 电子学会C/C++编程等级考试2022年03月(一级)真题解析
  • linux文件IO
  • CentOS to 浪潮信息 KeyarchOS 迁移体验与优化建议
  • 【算法】二分查找-20231120
  • Leetcode—2760.最长奇偶子数组【简单】
  • ubuntu 20通过docker安装onlyoffice,并配置https访问
  • 基于Qt QList和QMap容器类示例
  • 关于缓存和数据库一致性问题的深入研究
  • 容斥 C. Strange Function改编题
  • 使用宝塔面板安装mysql
  • AI机器学习 | 基于librosa库和使用scikit-learn库中的分类器进行语音识别
  • Canal+Kafka实现MySQL与Redis数据同步(一)
  • 【洛谷 P1182】数列分段 Section II 题解(二分答案+递归)
  • 【论文解读】GPT Understands, Too
  • 阿里云ECS11月销量王 99元/年
  • <b><strong>,<i><em>标签的区别
  • 什么是美国服务器,有哪些优势,适用于什么场景?