正则表达 匹配方法
正则表达 匹配方法
部分内容已经消失
可以看到getter
方法和setter
方法已经从代码之中移除出去了,这样我们写文章的时候代码比较紧凑,便于阅读.
不足的地方
这个正在表达式不适合方法体之中存在代码快的情况.因为它以}
作为方法的介绍标记.但是如果此时方法体重存在}
这个符号,将不会匹配成功.
改进
上面的代码并不能匹配到方法体之中有嵌套的代码块的情况.
匹配正则
1 | public\s+(?:\w+(?:\s+)?)+\((?:\,?\s*\w+\s+\w+)*\)(\s+)\{(?:(?:\n|\r\n).*)*?\1\} |
上面正则判断方法的代码如下:
1 | (\s+)\{(?:(?:\n|\r\n).*)*?\1\} |
通过匹配方法体开始标记(\s+)\{
和结束标记\1\}
前面的空格判断方法体的开始和结束位置.匹配效果如下图:
这样就可以匹配到如下所示的代码:
1 | public static String oneArg(String arg1) |
新的问题
好的现在又引入了新的问题,如果是下面的代码:
1 | public void setName(String name) { |
上述正则将无法匹配到.因为方法体开始符{
前面只有一个空格,而结束符前面却有4个空格。
嗯,这个事情暂且搁置.就让自己手动现在使用哪种方式吧.
匹配getter setter方法
1 | public\s+\w+\s+(?:set|get)\w+\((?:\,?\s*\w+\s+\w+)*\)(\s+)\{(?:(?:\n|\r\n).*)*?\1\} |
匹配效果如下图图所示: