Python “的正则表达式”;def";

Python “的正则表达式”;def";,python,regex,Python,Regex,我正试图找到“def”的正则表达式 其工作应如下: def h(): def f(a=1): def g(a=-2): def x(_sad,sda_,m=+3, n=-2): 如果它不起作用: def (m, x=y) 我所做的: ^def\s\w+\((\w\,)*(\w+=?\+?\-?\d+\,)*(\w)*\):$ 但是,它不通过大小写“def(a=1):”和“def g(a=-2):” 我哪里做错了 我的目标是满足这些情况: def h(): def f(a=1): def

我正试图找到“def”的正则表达式 其工作应如下:

def h():
def f(a=1):
def g(a=-2):
def x(_sad,sda_,m=+3, n=-2):
如果它不起作用:

def (m, x=y) 
我所做的:

^def\s\w+\((\w\,)*(\w+=?\+?\-?\d+\,)*(\w)*\):$
但是,它不通过大小写“
def(a=1):
”和“
def g(a=-2):

我哪里做错了

我的目标是满足这些情况:

def h():
def f(a=1):
def g(a=-2):
def x(_sad,sda_,m=+3, n=-2):
不满足这些情况: def(m,x=y)

只是为了好玩

\s*def\s+[^\(]+\([^\)]*(?:(?:\([^\)]*?\))[^\)]*)*\):

说明:
^
:根据多行模式,字符串的开头或行的开头
\s
:“空白字符”:空格、制表符、换行符、回车符、垂直制表符
+
:一个或多个
\w
:“单词字符”:ASCII字母、数字或下划线
*
:零次或多次

输入:

def h():
def f(a=1):
def g(a=-2):
def x(_sad,sda_,m=+3, n=-2):
def (m, x=y) 
def name(database_name):
    def name(name1, name2):
        def name(name1, attr=value):
    def name(name1, default='', length=default, **value):
    def name(name1, default='', length=(0, 999), **kwargs):

匹配除def(m,x=y)之外的所有对象

您想捕获什么?如果您只想检查单词
def
,执行文本搜索(如字符串中的
'def')有什么不对?请使用
ast
模块。不要试图用正则表达式来做解析器应该做的事情……分析语句是用
解析器来完成的(请参阅)。它通常是使用上下文无关语法而不是正则表达式来完成的。对于正则表达式来说,解析
def
语句可能是不可能的,因为默认参数值可以是任何类型的表达式。Python不是一种常规语言,因此您需要一组更复杂的工具来解析它。通常在
def
之前有空格。然后在
def
之前添加
\s*
,有效的Python标识符可以包含的不仅仅是ASCII。正则表达式的功能不足以解析Python函数定义