• 5分钟回忆正则表达式


    本文目的

    此文章在于帮助读者在5分钟内,回忆正则表达式,前提是读者需要具有一定的正则表达式基础。对于没有任何正则表达基础的读者,本文可能用处不大,这类读者可以参看文章《正则表达式30分钟入门教程》。

    基本字符

    \d

    数字,digital的简写

    \b

    单词开头或结尾,如’\baw*z\b’,a开头,b结尾

    \s

    空白,如空格,制表符,回车,换行

    \w

    字母或数字,还有中文

    ^

    开头

    $

    结尾

    .

    任意单个字符,除了换行

    [abc]

    匹配任意在等于a或b或c的字符

    [m-n]

    范围,m-n之间,也适用于字母

    数量限定

    {n}

    出现n次

    {n,m}

    出现n到m次

    {n,}

    出现大于或等于n次

    ?

    出现0次或1次

    *

    出现0此或多次

    +

    出现1次或多次

    反义字符

    \D

    匹配任意不是数字的字符

    \B

    匹配不以某字符开头或结尾

    \S

    匹配任意不是空白字符

    \W

    匹配任意不是字母或数组或中文

    [^x]

    匹配任意不是x的字符

    [^xyz]

    匹配任意不是x,或y或z的字符

    P.S.: 与基本字符对应,刚好相反

    其他字符

    \

    转义字符,上面出现的特殊字符为保留字符,如果需要匹配这些字符,如$,^等,需要用\转义

    ()

    分组,用于关联后面相邻的数量限定,如(ab){2},表示’ab’必须连续出现两次,如果写成ab{2},那么只是标识’b’需要连续出现2次

    |

    逻辑或,匹配两边中的一个即符合

    常见正则表达式

    IP v4

    ^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$

    去除开头空白符号

    ^\s*

    出去结尾空白符号

    \s*$

    去除两端空白符号

    (^\s*)|(\s*$)

    日期YYYY-MM-DD

    \d{4}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2]\d)|(3[0-1]))

    P.S.正则表达式不是万能的,比如上面的日期的判断,还需要判断闰年,大小月等,这些逻辑在正则表达式中不能完成,还需要其他方式判断日期的合法化。

    参考资料

  • 相关阅读:
    Leetcode: Surrounded Regions
    Leetcode: 3Sum Closest
    Leetcode: 3Sum
    Leetcode: Wildcard Matching
    Leetcode: Edit Distance
    Leetcode: Best Time to Buy and Sell Stock III
    Leetcode: Combination Sum II
    Leetcode: Next Permutation
    Leetcode: Merge Intervals
    Leetcode: Minimum Window Substring
  • 原文地址:https://www.cnblogs.com/bourneli/p/2429829.html
Copyright © 2020-2023  润新知