php中文网

如何使用正则表达式有效统计Go语言文件中类的数量、属性数量和方法数量?

php中文网

理解问题:统计单个 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中文网其它相关文章!