之前做leetcode遇到一道题,其中一个要求是把邮箱地址的local name中第一个+到@号的字符全部忽略掉(包括+号)
例如:[email protected]可处理为[email protected]
之前正好看了正则表达式,感觉这个要求还是挺适合用正则的regex_replace函数来实现的。然后我就写了如下代码(错误代码)
1 |
regex pattern2("+.*@"); |
由于+号是特殊字符,所以需要来进行转义,’.’表示任意字符,*表示匹配零次或多次之前的部分,最后加@。
编译的时候抛异常。
正确的写法如下:
1 |
regex pattern2("\+.*@"); |
后来查询资料发现,’‘本身就是个特殊字符,也就是说,‘+’中的’‘也需要通过转义得到,否则编译器不认。也就是通过’\‘先转义出一个’‘,再由转义出的反斜杠去转义+。




近期评论