正则表达式初探

时间:2022-11-17 18:48:52
      本周最让我纠结的就是正则表达式,但本着能复制粘贴坚决不自己写的基本原则,大部分情况,百度都是可以解决的,但百度不是万能的,所以就只能学着自己写。
      在参考了多篇博客后。。。。得出一些自己觉得有用,但可能没什么用的总结。
      例如:2到4位字母和数字的组合,第一位不能是数字1。正则表达式写出来就是这样:
      ^[2-9,0,a-zA-Z][\d,a-zA-Z]{1,3} $
      是不是很像乱码,这就是我很抗拒它的一点。思路大概是将表达式按位分开处理,第一个[  ]里的内容匹配了了2-4位中的其中一位,意为匹配除 1 以外的数字和字母,第二个 [  ]匹配了剩下的1-3位,意为匹配数字和字母。其中^和$是作为正则表达式的开始和结束,[  ]是一个字符集合,[  ]里的 ‘’ ,‘’是分隔符。将2-9,0,a-zA-Z这三个表达式分开,表达式之间的关系为或。意为匹配除 1 以外的数字和字母,\d是匹配数字字符,a-zA-Z为匹配英文字符。{1,3}的是匹配的次数,至少匹配一次,至多匹配3次。
      正则表达式实际上类似于助记符,常用的元字符 ,大概总结了一下              
                          

元字符

描述

^

一个正则表达式的开始

$

一个正则表达式的结束

[]

包含,匹配所包含的任意一个字符

()

保存表达式值,可引用

{n}

固定匹配长度,例如 ^\d{3}$  为匹配3位数字

{m,}

至少匹配m位  例如 ^\d{3,}$ 为匹配至少3位数字

{m,n}

至少匹配m位,至多匹配n位 例如 ^[a-z]{2,3}$  为匹配至少2位,至多3位小写字母

.

任意单个字符

[a-z]

匹配26个小写字母

[A-Z]

匹配26个大写字母

[0-9]

0到9的数字

,

分割符,例如[1,2,3] 为包含1或2或3中的任意一位

\

转义

?

匹配长度为0位或者1位,等价于{0,1}

*

匹配长度为至少0次,等价于{0,}

+

匹配长度为0位或者1位,等价于{1,}

\d

等价于[0-9]

\D

等价于[^0-9]

\w

等价于[A-Za-z_0-9],匹配包含字母数字及下划线

\W

等价于[^A-Za-z_0-9],匹配不包含字母数字及下划线的字符


            正则的使用上,私以为最难的就是对匹配结果的划分,可能划分的思路会让你走进不同的坑,有的坑大,有的坑小。但是跳过不同的坑,说不定就找到了想要的结果了,反正多加练习。前进吧,小钻风!!!


铸剑团队签名:

【总监】十二春秋之,3483099@qq.com

【Master】巡山小钻风840260821@qq.com

【Java开发】雨鸶,343691194@qq.com;思齐骏惠,qiangzhang1227@163.com;小王子,545106057@qq.com;巡山小钻风,840260821@qq.com

【VS开发】豆点,2268800211@qq.com

【系统测试】土镜问道,847071279@qq.com;尘子与*,695187655@qq.com

【大数据】沙漠绿洲,caozhipan@126.com;张三省,570417591@qq.com

【网络】夜孤星,11297761@qq.com

【系统运营】三石头,261453882@qq.com;平凡怪咖,591169003@qq.com

【容灾备份】秋天的雨,18568921@qq.com

【安全】保密,你懂的。

原创作者:巡山小钻风

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。