目录

正则表达式简述

目录

正则表达式简述

  1. 普通字符

    普通字符代表它们自身,用于精确匹配字符串中的字符。例如,a 匹配字符 a,1 匹配数字 1。

  2. 元字符

    元字符是具有特殊含义的字符,用于匹配特定类型的字符或字符串模式。

    常用元字符

    . :匹配除换行符以外的任意单个字符。例如,a.c 可以匹配 abc、a1c 等。

    ^ :匹配字符串的开始位置。例如,^abc 只匹配以 abc 开头的字符串。

    $ :匹配字符串的结束位置。例如,abc$ 只匹配以 abc 结尾的字符串。

    • :匹配前面的元素零次或多次。例如,ab*c 可以匹配 ac、abc、abbbc 等。
    • :匹配前面的元素一次或多次。例如,ab+c 可以匹配 abc、abbbc 等,但不能匹配 ac。

    ? :匹配前面的元素零次或一次。例如,ab?c 可以匹配 ac 或 abc。

    {n} :匹配前面的元素恰好 n 次。例如,a{3} 只匹配 aaa。

    {n,} :匹配前面的元素至少 n 次。例如,a{3,} 可以匹配 aaa、aaaa 等。

    {n,m} :匹配前面的元素至少 n 次,但不超过 m 次。例如,a{3,5} 可以匹配 aaa、aaaa、aaaaa。

    | :或运算符,匹配两个或多个模式中的任意一个。例如,a|b 可以匹配 a 或 b。

    () :分组,用于将多个元素组合成一个单元,并可以对分组应用量词或其他操作。例如,(ab)+ 可以匹配 ab、abab 等。

  3. 字符类

    字符类用于匹配一组字符中的任意一个。

    常用字符类

    [ ]:匹配方括号内的任意一个字符。例如,[abc] 可以匹配 a、b 或 c。

    [^ ]:匹配不在方括号内的任意一个字符。例如,[^abc] 可以匹配除 a、b、c 以外的任意字符。

    [a-z]:匹配任意小写字母。

    [A-Z]:匹配任意大写字母。

    [0-9]:匹配任意数字。

    [a-zA-Z0-9]:匹配任意字母或数字。

  4. 预定义字符类

    预定义字符类是一些常用字符类的缩写。

    常用预定义字符类

    \d:等价于 [0-9],匹配任意数字。

    \D:等价于 [^0-9],匹配任意非数字字符。

    \w:等价于 [a-zA-Z0-9_],匹配任意字母、数字或下划线。

    \W:等价于 [^a-zA-Z0-9_],匹配任意非字母、数字或下划线的字符。

    \s:匹配任意空白字符,包括空格、制表符、换行符等。

    \S:匹配任意非空白字符。

  5. 边界匹配

    边界匹配用于匹配字符串中的特定位置。

    常用边界匹配

    \b:匹配单词边界,即单词与非单词字符之间的位置。例如,\bcat\b 只匹配独立的单词 cat,而不匹配 category 中的 cat。

    \B:匹配非单词边界。

  6. 贪婪与非贪婪匹配

    贪婪匹配:默认情况下,量词(如 *、+、{n,} 等)是贪婪的,即尽可能多地匹配字符。例如,a. *b 会匹配从第一个 a 到最后一个 b 之间的所有字符。

    非贪婪匹配:在量词后面加上 ? 可以将其变为非贪婪匹配,即尽可能少地匹配字符。例如,a.* ?b 会匹配从第一个 a 到最近的一个 b 之间的字符。