一、学习网站
稍稍加强:RegexOne 中文 - 通过简单的交互式练习来学习正则表达式 (imageslr.github.io)
二、基本知识
1、字符集
[abc] 匹配任何一个字符 a、b 或 c
2、选择
(x|y) 匹配 x 或 y
3、重复
{n} 精确匹配 n 次
{n,} 至少匹配 n 次
{n,m} 匹配从 n 到 m 次
4、量词
* 零次或多次
+ 一次或多次
? 零次或一次
5、边界
^ 行的开始。也表示否定 例:a[^bd]c,除了abc、adc,其余 a ?c 的字符串都匹配
$ 行的结束
\b 单词边界
6、转移
\ 用于转义特殊字符或表示特殊序列,如 \d 表示数字,\s 表示空白字符
7、分组
(x) 创建一个分组,允许你捕获匹配的文本或在量词后重复分组
8、引用
\n 引用前面用圆括号定义的分组 n 的匹配
9、特殊字符
\d 数字(等同于 [0-9])
\D 匹配除数字之外的字符(与d相反)
\w 单词字符(字母、数字及下划线)
\W 匹配除字母、数字和下划线之外的字符(与w相反)
\s 空白字符(空格、制表符、换行符等)
\S匹配除空白符之外的字符
. 点可以匹配任何字符
三、进阶
正则表达式都是默认最长匹配,如果想要设置最短匹配,则在后面加一个 ‘ ? ’
四、C++使用
regex pattern (R“(正则表达式)”)
smatch match 保存匹配的str
regex_search(text,match,pattern)获取第一个匹配的字符串
match.str()匹配的str
match[1].str()第一个捕获组
match.position[1] 第一个捕获组出现的下标
regex_replace(text,pattern,“替换str或者$1”)
$1表示第一个捕获组(通过回溯方式取得)
总的来说,正则表达式很简单,跟着学习网站,过一遍,肯定都能学懂,两个网站题量也不大,认真做,估计最多1h就可以刷完,只是如果不常用,容易忘,所以记录一下。
后续再完善一下,提供一些例子,丰富些内容。