Python “的正则表达式”;def";
我正试图找到“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 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函数定义