想来想去也想不到合适的词,还是英文的“tips”来的贴切,是想记录下自己用regex时的杂七杂八。
1, 想匹配换行符,regexp应写成 char *pattern = "\n".
我可不是白说一句,这两天总误写成 char *pattern = "\\n",原因你大概也知道。正则式的语法本来就扎眼,再套上一层c的断行符,可谓雪上加霜。
这里清理一下思路:像比要要匹配空白字符,确实要写成char *pattern = "\\s", 因为我们想要把"\s"这个字符串完整无损的提交给regex引擎解析,想在最终的二进制文件里,让regex看到的是"\s",所以在源码里要写成”\\s“。若要匹配换行符,换行符本身就对应有asciii值,不像”空白字符”,它只是个集合概念,regex说你可以用“\s"指定它,于是我们就把"\s"提交给regex。
只记住,你想在二进制文件里,让regex看到什么。
2, 匹配空白字符或行尾写成(\\s|$)。
例如在一个文件里,字符序列"xx.c"后面要么是文件尾(EOF),要么是空格。我们这样匹配它:
"xx\\.c(\\s|$)"。
阅读(766) | 评论(0) | 转发(0) |