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

80 lines
3.8 KiB
Markdown

# std::regex
怎么用?测试一下。
+ ### **元字符(Metacharacters)**
| 符号 | 说明 |
| ------- | ------------------------------------ |
| `.` | 匹配任意单个字符(除换行符外)。 |
| `^` | 匹配字符串的开头。 |
| `$` | 匹配字符串的结尾。 |
| `*` | 匹配前一个元素0次或多次(贪婪)。 |
| `+` | 匹配前一个元素1次或多次(贪婪)。 |
| `?` | 匹配前一个元素0次或1次(可选)。 |
| ` | ` |
| `()` | 分组,用于捕获子表达式。 |
| `[]` | 字符集,匹配方括号中的任意一个字符。 |
| `{n}` | 匹配前一个元素刚好n次。 |
| `{n,}` | 匹配前一个元素至少n次。 |
| `{n,m}` | 匹配前一个元素n到m次(包含n和m)。 |
------
### **字符集(Character Classes)**
| 符号 | 说明 |
| ----------- | ------------------------------------------- |
| `[abc]` | 匹配`a``b``c`中的任意一个字符。 |
| `[^abc]` | 匹配不在`a``b``c`中的字符。 |
| `[a-z]` | 匹配从`a``z`范围内的任意字符。 |
| `[0-9]` | 匹配从`0``9`范围内的任意数字。 |
| `[: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次。 |
------
### **特殊字符的匹配**
如果需要匹配元字符本身(如`.``*`等),需要加反斜杠进行转义。例如,匹配`.`需要写成`\.`