You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式提取函数定义行中的函数名?

提取函数名的正则表达式解决方案

需求与现有尝试

你需要从以下格式的代码行中提取函数名functionName:

returnType ClassType functionName(int param1, double param2)
returnType ClassType functionName();

已有非正则实现:

line.split("(")[0].split(" ")[-1]

尝试的正则代码(返回空值):

import re
pattern = re.compile(r"\w+^\(")

问题分析

你写的正则r"\w+^\("存在两处逻辑错误:

  1. ^是行起始锚点,放在此处要求\w+必须出现在行开头,和实际文本结构不符
  2. 未做分组提取,且匹配逻辑无法定位到目标函数名

正确正则方案

可以通过匹配左括号前的最后一个目标单词来提取函数名,以下是两种实现方式:

基础版正则

适配函数名与左括号直接相连的场景:

import re

# 捕获左括号前的单词作为函数名
pattern = re.compile(r"(\w+)\(")

# 使用示例
lines = [
    "returnType ClassType functionName(int param1, double param2)",
    "returnType ClassType functionName();"
]

for line in lines:
    match = pattern.search(line)
    if match:
        print(match.group(1))  # 输出:functionName

严谨版正则

兼容函数名与左括号之间有空格的场景(比如functionName ():

import re

# 允许函数名和左括号之间存在空白字符
pattern = re.compile(r"(\w+)\s*\(")

正则解释

  • (\w+):捕获一个或多个字母、数字、下划线(符合常规函数名格式),这就是我们要提取的目标内容
  • \s*:匹配0个或多个空白字符,兼容格式不规范的情况
  • \(:匹配左括号,用来精准定位函数名的结束位置

内容的提问来源于stack exchange,提问作者turtle_in_mind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 06:23:10