80 lines
3.8 KiB
Markdown
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次。 |
|
|
|
|
------
|
|
|
|
### **特殊字符的匹配**
|
|
|
|
如果需要匹配元字符本身(如`.`、`*`等),需要加反斜杠进行转义。例如,匹配`.`需要写成`\.`。 |