10分钟快速入门正则表达式

在力扣上看了一本付费书籍,终于让我入门了正则表达事...

问题:

"^1[3-9]\\d{9}$" 是啥意思

读完本篇小笔记,你就知道,啥是"^1[3-9]\\d{9}$" 这个是啥意思了。

首先,正则表达式,这个名字很拗口。其实,它是"正规、规则"的意思。常用来匹配字符串,看字符串,是否符号某种规则。

这样一说,你是不是就明白了?

其次,^和$是表示正则表达式的开头和结尾。这个理解起来也不难的对吧?

接着,我们先看\\d。

其实我之前看到过好几次,一直不知道\\d啥意思。今天终于懂了。

实际上

  1. d 是digital \d 表示匹配一个数字
  2. w是word \w表示匹配一位字符(下划线,英文字母)
  3. s 是space \s表示匹配一个空格

但是为啥那里写的是\\d 呢?

因为"\" 是特殊字符,需要转义,所以多加了一个"\"。写出来就是"\\d",表示匹配数字,懂了不

d、w、s这三个字母可以记作「大巫师」(原作者称)。

DWS表示相反的匹配,比\\D表示不能匹配非数字的字符串。

那么{9}又是什么意思呢?

我们先来看最简单的正则,比如.表示匹配1位,..表示匹配2位,...表示匹配3位.,以此类推:

复制代码
System.out.println("a".matches("."));
System.out.println("a".matches(".."));

//第一次输出结果是true ,第二个是false。你可以试试

但是如果匹配10000位,要写10000个"."吗?

不用的。人类是会偷懒滴

可以用**{}几位到几位**。

{1}表示匹配1位

{1,}表示匹配1到+无数个

{1,2}表示匹配1-2次。
所以\\d{9} 表示匹配9位数字

小练习:

13 ~ 19 开头的字符串才可能是手机号码。请写一个正则。

答案:1[3456789]\\d{9} 或者 1[3-9]\\d{9}

[]表示这个位置的数字或字符只能从[]这里面选

[3456789]因为是连续的,所以可以写成[3-9]。同理[a-z]和[A-Z]表示,匹配所有小写字母和大写字母。

* ? +

* 表示 {0,},意思是匹配 0 到无数次;

  • 表示 {1,},意思是匹配 1 到无数次;

? 表示 {0,1},也就是匹配 0 ~ 1 次。

这里面有个概念 0次匹配,什么意思呢?

其实就是a* 可以匹配空字符串,一个字符、两个字符,以此类推。但是,它不能匹配其他字符,例如b字符。

概念如果不理解,就一直问,打破砂锅问到底,问到自己会。不然,这个问题就一直堵着。很多东西都不懂了。

就是这样!

相关推荐
java1234_小锋几秒前
一周学会Flask3 Python Web开发-使用SQLAlchemy动态创建数据库表
开发语言·数据库·python·flask·flask3
m0_7482384212 分钟前
Spring Boot 实战:轻松实现文件上传与下载功能
java·数据库·spring boot
不想秃头儿28 分钟前
MySql学习_基础Sql语句
数据库·学习·mysql
盖盖衍上37 分钟前
4-001:MySQL 中的索引数量是否越多越好?为什么?
数据库·mysql
小蒜学长37 分钟前
青年公寓服务平台的设计与实现(代码+数据库+LW)
数据库·spring boot·后端·spring·智能家居
月落星还在39 分钟前
Redis 主从复制机制深度解析与实践指南
数据库·redis·缓存
交响梦1 小时前
医院HIS系统的安全解决方案
大数据·网络·数据库·安全·健康医疗
全栈小51 小时前
【C#】使用DeepSeek帮助评估数据库性能问题,C# 使用定时任务,每隔一分钟移除一次表,再重新创建表,和往新创建的表追加5万多条记录
java·数据库·c#
岱宗夫up1 小时前
C语言零基础入门教程:操作系统原理(上)
服务器·c语言·数据库
橘猫云计算机设计1 小时前
基于Java 童装在线销售系统(源码+lw+部署文档+讲解),源码可白嫖!
java·服务器·数据库·spring boot·后端·小程序