std_reg/README.md
2025-02-27 17:00:55 +08:00

3.8 KiB

std::regex

怎么用?测试一下。

  • 元字符(Metacharacters)

    符号 说明
    . 匹配任意单个字符(除换行符外)。
    ^ 匹配字符串的开头。
    $ 匹配字符串的结尾。
    * 匹配前一个元素0次或多次(贪婪)。
    + 匹配前一个元素1次或多次(贪婪)。
    ? 匹配前一个元素0次或1次(可选)。
    ` `
    () 分组,用于捕获子表达式。
    [] 字符集,匹配方括号中的任意一个字符。
    {n} 匹配前一个元素刚好n次。
    {n,} 匹配前一个元素至少n次。
    {n,m} 匹配前一个元素n到m次(包含n和m)。

    字符集(Character Classes)

    符号 说明
    [abc] 匹配abc中的任意一个字符。
    [^abc] 匹配不在abc中的字符。
    [a-z] 匹配从az范围内的任意字符。
    [0-9] 匹配从09范围内的任意数字。
    [:alnum:] 匹配任意字母或数字(等价于[a-zA-Z0-9])。
    [:alpha:] 匹配任意字母(等价于[a-zA-Z])。
    [:digit:] 匹配任意数字(等价于[0-9])。
    [:space:] 匹配空白字符,包括空格、制表符、换行符等。
    [:punct:] 匹配标点符号。
    [:lower:] 匹配小写字母。
    [:upper:] 匹配大写字母。

    转义字符(Escape Sequences)

    符号 说明
    \\ 匹配反斜杠本身。
    \d 匹配数字字符(等价于[0-9])。
    \D 匹配非数字字符(等价于[^0-9])。
    \w 匹配字母、数字或下划线(等价于[a-zA-Z0-9_])。
    \W 匹配非字母、非数字和非下划线字符(等价于[^a-zA-Z0-9_])。
    \s 匹配空白字符(等价于[:space:])。
    \S 匹配非空白字符。

    断言(Assertions)

    符号 说明
    (?=...) 正向先行断言,确保后面可以匹配表达式...
    (?!...) 负向先行断言,确保后面不能匹配表达式...
    (?<=...) 正向后行断言,确保前面可以匹配表达式...
    (?<!...) 负向后行断言,确保前面不能匹配表达式...

    贪婪与非贪婪(Greedy and Non-Greedy)

    符号 说明
    *? 非贪婪匹配前一个元素0次或多次。
    +? 非贪婪匹配前一个元素1次或多次。
    ?? 非贪婪匹配前一个元素0次或1次。
    {n,m}? 非贪婪匹配前一个元素n到m次。

    特殊字符的匹配

    如果需要匹配元字符本身(如.*等),需要加反斜杠进行转义。例如,匹配.需要写成\.