所以,是的,标题很奇怪,但我不知道如何正确描述我的问题。无论如何...让我们解决问题。
要完成的工作
我的老板想要一个读取 python 文件的所有函数并返回包含找到的函数的 DataTable 的函数。这个函数应该用 IronPython(实际上使用 C# 库的 Python)编写。
问题
我对 Python 比较陌生,我不知道这种语言能做什么,所以我开始编写我的函数,是的,它工作得很好,除了一个奇怪的问题。我写了一个正则表达式来查找函数并对其进行测试,我下载了一个 RegEx Tester。正则表达式测试器显示了我想要的结果:第 1 组 - 函数名称,第 2 组 - 函数参数和第 3 组 - 函数的内容。
由于一些神奇的原因,它在进行实时测试时不起作用。我的意思是不起作用,第 3 组实际上没有输出。在用另一个(在线)RegEx Tester测试表达式后,它告诉我,第 3 组实际上没有函数的内容,它只有一小部分,以换行符/回车符开头。
在我的测试用例中,第 3 组的结果都是一样的,以换行符/返回字符开始并以函数返回(例如返回 objDic)结束。
问题:那里到底出了什么问题?我不知道我的 RegEx 出了什么问题。
正则表达式
objRegex = Regex(r"(?i)def[\s]+([\w]+)\(([\, [\w]+)\)(?:[\:{1}]\s*)([\n].*(?!\ndef[\s]+))+")
数据
def test_function(some_parameter):
try:
some_cool_code_goes_here()
return obj
except Exception as ex:
DetailsBox.Show(ex)
def another_cool_function(another_parameter):
try:
what_you_want()
return obj
except Exception as ex:
DetailsBox.Show(ex)
结果
匹配: def test_function(some_parameter):...
位置: ..
长度: ..
第 1 组: test_function
第 2 组: some_parameter
第 3 组:( 换行符/返回字符)
返回 obj
但是第 3 组应该是:
try:
some_cool_code_goes_here()
return obj
except Exception as ex:
DetailsBox.Show(ex)
我希望你能帮助我:3谢谢你们!