Skip to content

正则表达式

正则表达式在<regex>中定义,是一种强大的处理字符串的库。C++中morning的语法是ECMAScript。

语法

正则表达式中的任何字符都表示匹配自身,但以下特殊字符除外:

^ $ \ . * + ? ( ) [ ] { } |

如果要匹配这些字符,则需要加上\转义字符。下面讲解这些特殊字符的含义:

  1. 锚点

    ^ 和 $ 被称为锚点,它们分别表示字符串的开始和结束。

  2. 通配符

    . 可以匹配除了换行符之外的任意单个字符。

  3. 替代

    | 表示或,即匹配 | 左或右的字符。

  4. 分组

    () 被称为捕获组,表示匹配的模式。

  5. 重复

    以下4个字符表示可重复匹配:

    • *:匹配零次或多次之前的部分。
    • +:匹配一次或多次之前的部分。
    • ?:匹配零次或一次之前的部分。
    • {n,m}:匹配n至m次之前的部分。

    重复匹配字符默认位贪婪匹配,即尽可能多地匹配字符。在字符后面加上 ?,可以改为非贪婪模式。

  6. 优先级

    元素:例如a,是正则表达式最基本的构建块 量词:例如+、*、?、{n,m},与左侧的元素紧密绑定 串联:例如ab+c,在量词之后绑定 替代符:例如|,最后绑定

  7. 字符集合

    为了一次性匹配多个字符,一种方法是使用[c1c2c3...cn]的形式,表示匹配方括号内的任意字符。如果第一个字符是^,则表示匹配除了这些字符之外的任意字符:

    • [^abc]:匹配除了a、b、c之外的所有字符。
    • [a-z]:匹配所有小写字母

    还有一种方法是使用字符类,这里只列举用得比较多的,比如\d+,表示匹配一个或多个数字,

regex库