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