正则表达不再靠control+v

1. 前言

  • 以前每次需要正则的时候总是去control+c&v,后来有次遇到大牛写逻辑业务的时候直接用正则处理一些判断,觉得:嗯!很cool,需要去了解下!!
  • 看完之后,基本语法了解了之后还是要多用,多尝试,才能把这个技能写的越来越溜,才能把这个逼装好

2. 准备

  • 首先先怎么要看几篇文章吧,主要看了小松哥的文章和语法介绍

    系统地学习正则表达式(一):基础篇
    正则表达式 - 语法

  • 工具:Regextor:可以校验你写的的正则表达式的正确性的APP,APPStore上6元,当然有时间可以自己找找破解版
    Regextor.png
  • 正则表达式就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,用来表达对字符串的一种过滤逻辑,画下重点:规则字符串+过滤匹配

3. 字符&字符集的匹配

3.1 精确匹配某一个字符
  • 使用[]包裹的字符即是需要特殊匹配的字符
  • 默认是会区分大小写


    精确某一个字符.png

3.2 匹配任意字符

  • 使用.来表示一个任意字符, 使用..来表示两个任意字符,以此类

    匹配一个任意字符.png

    匹配两个任意字符.png

  • 解释:

    c.t:会匹配以c开头,以t结尾,中间为任意一个字符的字符串
    c..t会匹配以c开头,以t结尾,中间为任两个字符的字符串

3.3 匹配特定字符集

  • 使用[xxx]包裹的内容表示匹配特定字符集中中的一个字符

    匹配特定字符集.png

  • 解释:

    [abcd]会匹配a or b or c or d。所以c[abcd]t会匹配" cat "和" cbt "而不会匹配" cet "

3.4 匹配特定字符集区间

  • [x-x]表示匹配一个特定的区间
  • 常用的字符集区间

    [a-z]:匹配所有小写字母区间
    [A-Z]:匹配所有大写字母区间
    [0-9]:匹配所有数字区间
    [A-z]: 匹配从 ASCIIA到ASCIIz的所有字符(不仅仅匹配所有字母,还匹配在 ASCII 表中 A 到 z 中的字符,如 [ 和 ^ 等)
    [A-Za-z0-9] :匹配所有的大小写字母和数字

匹配字符集.png

3.5 非字符集的匹配

  • 使用场景:需要排除一组不需要匹配的字符集
  • ^是将字符集合中的所有字符都取消匹配
  • ^要写扎起字符集[]
非字符集的匹配.png
  • 解释:

    [^a-z] 匹配所有不是小写字母的字符

4. 元字符

4.1 转义字符及补充

  • 正则中的元字符.都需要加上\转义
  • 需要匹配\则需要使用\\or\\\来实现
    \转义字符的补充.png
\转义字符的补充2.png

4.2 常用元字符

元字符 描述
[\b] 退格符
\f 换页符
\n 换行
\r 回车
\t 制表符
\v 垂直制表符
\d 任何数字 (同 [0-9])
\D 任何非数字 (同 [^0-9])
\w 所有的文字数字式字符:大小写字母、数字和下划线 (同 [a-zA-Z0-9_])
\W (同 [^a-zA-Z0-9_])
\s 所有的空白字符 (同 [\f\n\r\t\v])
\S 所有的非空白字符 (同 [^\f\n\r\t\v])
原字符的使用1.png
原字符的使用2.png

5. 匹配次数&多次匹配的使用

5.1 "1+"次匹配(一次以上匹配)

  • +表示匹配一个或者多个字符。例如,a将匹配"a",而a+则匹配一个或者多个"a"
  • 当在字符集合上使用+的时候,需要将+符号放在集合外面
一次以上的匹配.png
字符集一次以上的匹配.png

5.2 "0+"次匹配(0次以上匹配)

  • 匹配零个或更多字符的时候,可以使用*元字符
    0次以上匹配.png
0次以上字符集匹配.png

5.3 0or1次匹配(匹配0个或者1个字符)

  • ?匹配零个或者一个字符。所以:?非常适合于在文本中匹配一个可选的字符

5.4 匹配次数-精确匹配次数

  • 指定匹配的次数。次数可以在“ { ”和“ } ”之间指定,表示在{}之前的字符执行几次匹配
    指定次数匹配.png

5.5 匹配次数-至少匹配次数

  • 至少匹配次数:只指定匹配次数的最小值。eg:{2,}意味着匹配至少两次
  • 次数区间匹配:eg:{2,3}意味着最少匹配 2次,最多匹配3次
  • ?和{0,1}的功能是一样的,+和 {1,}的作用是一样的
    至少区间匹配次数.png
至少匹配次数.png

6. 贪婪匹配

  • 先看个🌰,但是匹配结果并不是我们想要的结果


    贪婪匹配.png
  • 为什么没有像预期匹配两个cat?
    • 这是因为*+都是贪婪匹配。也就是说,正则表达式总是寻找最大的匹配,而不是最小的,设计如此,我觉得的就像优先级一样,贪婪匹配的优先级最低,匹配程度最广
    • 贪婪匹配的时候就要使用这些量词的非贪婪匹配(匹配尽可能少的字符).非贪婪量词是在量词后面加上?
贪婪量词 非贪婪量词
* *?
+ +?
{n,} {n,}?
非贪婪量词.png

7. 匹配边界

  • 字符串边界匹配的元字符是^$分别用于字符串的开始和结束
  • 注意^如果位于集合开始处的话,则表示否定;如果在集合外面,则将匹配字符串的开始位置
  • 🌰🌰🌰:

    [^a-z] : 表示匹配非小写字符
    ^[a-z]: 表示匹配字符串的开始位置,第一个字符匹配小写字符

匹配边界(开始).png
匹配边界(结束).png
  • 综合实例,实际开发中很多这样的需求,以xx开头,以xx结尾的字符串校验,或者字符串中不允许有其它字符等等
    综合例子.png
综合例子错误.png

8. 实战

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容