快速学习正则表达式

本文详细介绍了正则表达式的基本概念和等价条件,并通过实例解析了如何使用正则表达式进行字符串匹配。例如,如何匹配以a开头和结尾的小写字母字符串,以及如何匹配不包含前导零的数字字符串。此外,还探讨了确保所有2出现在9之前的正则表达式构造。这些实例有助于深入理解正则表达式的运用。
摘要由CSDN通过智能技术生成
其实百度百科上的正则表达式已经很详细了。
正则表达式的要点在于匹配和等价

下面内容引用自百度百科,基本的等价条件:

> ?等价于匹配长度{0,1}
*等价于匹配长度{0,}
+等价于匹配长度{1,}
\d等价于[0-9]
\D等价于[^0-9]
\w等价于[A-Za-z_0-9]
\W等价于[^A-Za-z_0-9]。
常用运算符与表达式:
^ 开始
() 域段
[] 包含,默认是一个字符长度
[^] 不包含,默认是一个字符长度
{n,m} 匹配长度
. 任何单个字符(\. 字符点)
| 或
\ 转义
$ 结尾
[A-Z] 26个大写字母
[a-z] 26个小写字母
[0-9] 0至9数字
[A-Za-z0-9] 26个大写字母、26个小写字母和0至9数字
, 分割
.
分割语法:
[A,H,T,W] 包含A或H或T或W字母
[a,h,t,w] 包含a或h或t或w字母
[0,3,6,8] 包含0或3或6或8数字
语法与释义:
基础语法 "^([]{})([]{})([]{})$"
正则字符串 = "开始([包含内容]{长度})([包含内容]{长度})([包含内容]{长度})结束"
?,*,+,\d,\w 这些都是简写的,完全可以用[]{}代替,在(?:)(?=)(?!)(?<=)(?<!)(?i)(*?)(+?)这种特殊组合情况下除外。
示例一:
All strings of lowercase letters that begin and end in a(以a开头和结尾的所有小写字母字符串。).
a+([a-z]*) a+

题目分析
题目要求字符串全部小写,同时以a开头a结尾,那么首尾必须有a出现,这里我们用a+表示
+是一个限定符,代表至少出现一次。
要表达所有字符串,则必须出现+或*,这是无上限的限定符,小写字母用[a-z]表示。
字符串可能是aa,中间不一定有别的字符串,所以确定[a-z]后面是*而不是+,*代表0次及以上
示例二:
All strings of digits that contain no leading zeros(不包含前导零的所有数字字符串)
什么是leading zeros(前导零):前导零 是一种 显示数字前面的0的一种格式。
比如 我们要求是 999,999.999的格式显示数字
但是如果没有 这么大的数字 会显示 222.340 因为约束了小数点后面的位数,所以没有3位也会显示3位.
但是前面可能没有这么多位数 就不会显示了
而前导零就是要显示出前面的

题目分析
要求没有前导零,即如果一个数的整数部分不为0,那么它的整数部分第一位不能为0

首先考虑整数字符串
[1-9][0-9]*
再考虑到可能有小数
[1-9][0-9]*(\.)?[0-9]* 
再考虑到可能有正负
(+|-)?[1-9][0-9]*(\.)?[0-9]* 
示例三:
All strings of digits such that all the 2’s occur before all the 9’s(所有的数字串,使所有2出现在所有9之前)

这道题思路和前面的类似,关键在于2必须在9之前
把数字分为不包含2[0|1|3|4|5|6|7|8|9],不包含9[0|1|2|3|4|5|6|7|8|9]以及
太复杂的情况下可以定义变量
nat1 = [0|1|3|4|5|6|7|8|9]
nat2 = [0|1|2|3|4|5|6|7|8]
由于2必须在9之前,那么nat1放最后,nat2放前面即可
nat2+nat1+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值