在VS中使用正则表达式统计代码行数及正则表达式含义

统计方法

  • 在VS中可以在查找页面“查找选项”中选择“使用正则表达式”,“查找范围”选择“整个解决方案”,“查找内容”填写正则表达式“^:b*[^:b#/]+.*$”来统计项目总代码行数。
  • 点击“查找全部”之后查找结果页面统计的匹配行即为代码总行数。
  • 这个表达式统计的总行数不包括空行、“#”开头的包含文件行、以及“/”开头的注释行如果需要统计#开头的行,可以去掉“#”使用表达式“^:b*[^:b/]+.*$”。需要统计注释行的话也类似,去掉表达式中的“/”即可。

在VS中使用正则表达式统计代码行数及正则表达式含义_第1张图片

在VS中使用正则表达式统计代码行数及正则表达式含义_第2张图片

正则表达式分析

  • 接着简单分析下这个正则表达式的含义。首先需要知道一些关于这个正则表达式知识点:
  1. ^ --- 匹配行首;$   ---   匹配行尾;这两个成对使用是表示要求整个字符串完全匹配定义的规则,而不是只匹配字符串中的一个子串;
  2. * --- 匹配前面的子表达式任意次,包括0次;+ --- 匹配前面的子表达式正整数次,不包含0; --- 匹配前面的子表达式0次或1次;
  3. [xyz] --- 字符集合,表示匹配x,y,z中任意一个字符;[^xyz] --- 负值字符集合,表示匹配除x,y,z外的任意一个字符;
  4. . --- 匹配除“\n”和"\r"之外的任何单个字符;
  5. :b --- 这个我没有查到相关资料,好像是VS专用的。根据在VS中测试推测大概是匹配一些空字符(包含空格制表符回车换行符等)。了解到这里就可以理解上述正则表达式了。接下来两点是关于正则表达式中匹配空白字符的,可以略过不看。
  6. 扩展1:查到的资料中显示正则表达式中匹配空白字符使用的是 “\s”,但是我在VS中使用"\s"替换":b"的正则表达式 “^\s*[^\s#/]+.*$” 发现查找的代码行数会比之前多。带着疑问再经过单独测试 “\s” 发现在VS中它能匹配换行符回车符,匹配不了空格和制表符。因此使用 “^\s*[^\s#/]+.*$” 会导致将诸如 “空格空格换行符” “制表符空格换行符” 之类的空白语句也被匹配上,所以统计的代码行数会比使用 “^:b*[^:b#/]+.*$” 统计的代码行数多。在VS中使用正则表达式统计代码行数及正则表达式含义_第3张图片
  7. 扩展2:正则表达式资料里能查到的还有一个 “\b”,跟这个 “:b” 还不一样。关于 “\b” 的解释可以参考https://www.cnblogs.com/litmmp/p/4925374.html
  • 再来拆开看下这个表达式“^:b*[^:b#/]+.*$”。首先使用:b* 可以匹配到0个或多个空字符,直到出现非空字符。接着[^:b#/]+ 匹配个数不小于1个的除空字符(:b)、#、/ 以外的字符。接下来这个 .* 就很好理解,就是匹配任意次(包含0次)除回车符和换行符之外的所有字符。
  • 这样通过这个这个表达式,就可以统计除空行、“#”开头的代码行、以及“/”开头的注释行之外的代码总行数了。

你可能感兴趣的:(在VS中使用正则表达式统计代码行数及正则表达式含义)