import re import json def git_stats_to_json(text): # 正则表达式匹配任意顺序的统计项 pattern = r",?\s*(\d+)\s*files changed|,?\s*(\d+)\s*insertions\(\+\)|,?\s*(\d+)\s*deletions\(\-\)" # 动态提取并合并结果 data = re.findall(pattern, text) # print(data) result = {} for item in data: if item[0]: # 处理files_changed字段 result["files_changed"] = int(item[0]) if item[1]: # 处理insertions字段 result["insertions"] = int(item[1]) if item[2]: # 处理deletions字段 result["deletions"] = int(item[2]) # json_output = json.dumps(result, indent=4) # print(json_output) # 生成格式化JSON return json.dumps(result, indent=4, ensure_ascii=False) # 测试不同顺序的输入 test_cases = [ " 96 deletions(-), 2539 insertions(+), 11 files changed", " 11 files changed, 96 deletions(-)", " 2539 insertions(+), 96 deletions(-), 11 files changed" ] for text in test_cases: print(git_stats_to_json(text))