如何使用正则表达式有效统计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语言文件中类的数量、属性数量和方法数量?的详细内容,更多请关注硕下网其它相关文章!