Chinaunix首页 | 论坛 | 博客
  • 博客访问: 36442
  • 博文数量: 12
  • 博客积分: 26
  • 博客等级: 民兵
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-17 12:15
文章分类
文章存档

2015年(1)

2014年(9)

2013年(2)

我的朋友

分类: C/C++

2014-02-13 15:12:16

  想来想去也想不到合适的词,还是英文的“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|$)"。
阅读(740) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~