理解问题:统计单个 go 语言文件中的类、属性和方法数量
本问题涉及统计一个 go 语言文件中的类、属性和方法数量,旨在分析一个指定文件中的代码结构。
正则表达式匹配问题:只统计到一个方法
在提供的代码中,用于统计方法数量的正则表达式模式:
立即学习“go语言免费学习笔记(深入)”;
method_pattern = re.compile(r'funcs+((.*?))s+(w+)s*((.*?))s*{')
存在的问题是,此模式中缺少匹配方法函数体的部分,导致无法正确识别方法。
改进的正则表达式模式:
改进后的正则表达式模式:
method_pattern = re.compile(r'funcs+((.*?))s+(w+)s*((.*?))s+(.*?)s*{')
添加了 (.*?)s*{ 部分来匹配方法函数体。
更新后的代码:
更新后的代码如下:
import re def count_go_elements(file_path): with open(file_path, 'r') as file: content = file.read() # 统计结构体 struct_pattern = re.compile(r'types+(w+)s+struct') struct_names = struct_pattern.findall(content) struct_count = len(set(struct_names)) # 使用集合去重 # 统计字段 field_pattern = re.compile(r'(w+)s+(w+)') fields = field_pattern.findall(content) field_count = len(fields) # 统计方法 method_pattern = re.compile(r'funcs+((.*?))s+(w+)s*((.*?))s+(.*?)s*{') methods = method_pattern.findall(content) method_count = len(methods) return struct_count, field_count, method_count
通过更新正则表达式,现在可以正确统计文件中方法的数量。
以上就是如何使用正则表达式有效统计Go语言文件中类的数量、属性数量和方法数量?的详细内容,更多请关注php中文网其它相关文章!
版权声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系 yyfuon@163.com