zoukankan      html  css  js  c++  java
  • 正则表达式-实例分析

    有些人就喜欢反人类。

    比如,很多时候我们会具体需求写出符合要求的正则表达式。但是有些人偏偏不这么干,他会问你这个正则表达式是干嘛的,并称之为综合运用能力。

    这就好比非要人根据拉的屎去推测吃了什么。

    或许你想到了,他,就是面试官。

    没办法,人在矮檐下,不低头就碰头。忍忍吧!

    先撩出来一个正则表达式:

    /(w+)://([^/:]+)(:d*)?([^# ]*)/

    干嘛的呢,分析下:

    1、首先可以判断最外层的两个 / 是定界符,相当于 sed 的前一部分
    2、三组小括号,构成三个小组,配合 arr[i] ,形成arr[1], arr[2], ...
    3、w d 分别匹配 字母、数字
    4、(w+):// 匹配 若干个字符,并且分配到 1 部分
    5、([^/:]+) 匹配 非/、非: 部分,: 前所有东西
    6、(:d*)? 匹配 若干个数字的组合,括号后面的 ? 是 匹配前面表达式 0或 1 次。
    7、([^# ]*) 匹配 非#、非 (空格)

    结合实例再看看
    http://www.runoob.com:80/html/html-tutorial.html
    /(w+)://([^/:]+)(:d*)?([^# ]*)/

    1、首先可以判断最外层的两个 / 是定界符,相当于 sed 的前一部分
    2、三组小括号,构成三个小组,配合 arr[i] ,形成arr[1], arr[2], ...
    3、w d 分别匹配 字母、数字
    4、(w+):// 匹配 http:// 部分,:// 原样匹配, http则由 (w+) 匹配,并且把 http 分配到 1 部分
    5、([^/:]+) 匹配 www.runoob.com 部分,为什么呢,因为指定的是 非/、非: ,所以,匹配了 / 和 : 之间的所有东西
    6、(:d*)? 匹配 :80 部分, 这部分原本很好理解, : 开头,若干个数字的组合,可问题是在括号后面的 ? ,到底是个什么鬼 ,最终的解释只能是 匹配前面表达式 0或 1 次。
    7、([^# ]*) 匹配 /html/html-tutorial.html 部分,没啥说的, 非#、非 (空格)进行匹配

  • 相关阅读:
    BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊
    算法笔记-- 二进制集合枚举子集 && 求子集和 && 求父集和
    BZOJ 1084: [SCOI2005]最大子矩阵
    BZOJ 1968: [Ahoi2005]COMMON 约数研究
    2018 German Collegiate Programming Contest (GCPC 18)
    Codeforces 1100 F
    算法笔记--极大极小搜索及alpha-beta剪枝
    2017 Russian Code Cup (RCC 17), Elimination Round D
    All You Can Code 2008 (Romanian Contest) A
    2016 Russian Code Cup (RCC 16), Final Round B
  • 原文地址:https://www.cnblogs.com/smallfishy/p/12917724.html
Copyright © 2011-2022 走看看