我想要一个正则表达式,我将使用Python re模块,它将在python文件中查找python函数调用,但是我正在寻找的函数调用周围会有一些警告。 / p>
以下是我想在文件中查找的函数的示例用法:
# Simple function call.
f("_key")
# The chained function call, in the simplest format (no args).
f("_key").g()
# The chained function call with simple arguments.
f("_key").g("hello", 1337)
# The chained function call with possible, more complex arguments
f("_key").g(obj.blah(), {"dog":"cat"})
# And then the possibility for long function calls to extend over one line
f("_key").g(
"dogs",
"cats",
{"living":"together"})
通常的免责声明:我对此进行了搜索,问题与我的关系很接近,但我想知道我的需求是否足以绕过“常规与非常规”语言问题。这就是我不是计算机科学专业并且害怕正则表达式的原因。
答案 0 :(得分:9)
这应该做你想要的:
[a-zA-Z]+\([^\)]*\)(\.[^\)]*\))?
答案 1 :(得分:1)
FWIW,这里摘录自Grammar/Grammar:
decorator: '@' dotted_name [ '(' [arglist] ')' ] NEWLINE
trailer: '(' [arglist] ')' | '[' subscriptlist ']' | '.' NAME
power: atom trailer* ['**' factor]
atom: ('(' [yield_expr|testlist_comp] ')' |
'[' [listmaker] ']' |
'{' [dictorsetmaker] '}' |
'`' testlist1 '`' |
NAME | NUMBER | STRING+)
arglist: (argument ',')* (argument [',']
|'*' test (',' argument)* [',' '**' test]
|'**' test)
这些是正则表达式需要处理以捕获所有函数调用而没有任何误报的情况。
可能最好利用Python标准库附带的工具集,而不是正则表达式: