我真的不知道该怎么说。我正在创建一个程序,该程序读取另一个名为code.py的py文件,它将找到所有VALID词典变量名并打印出来,很容易吗?但是我试图运行的代码非常棘手,特意在示例中添加了欺骗正则表达式的代码。code.py的测试代码在这里,我当前的代码是:
import re
with open ("code.py", "r") as myfile:
data=myfile.read()
potato = re.findall(r' *(\w+)\W*{',data,re.M)
for i in range(len(potato)):
print(potato[i])
该正则表达式无法100%正常工作,当在测试代码上使用时,它会打印出arent希望打印的变量,例如:
# z={}
z="z={}"
print('your mother = {}')
测试文件的预期输出一直是a0,a,b,cd,e等,一直到z,然后一直是aa,ab,ac,ad等,一直到aq
并且在测试代码中真正标记为z的所有内容均不应打印。我意识到正则表达式对于执行此操作并不令人惊讶,但是我必须使用正则表达式,并且可以做到这一点。
编辑:使用新的正则表达式(r'^ (\ w +)\ W {',data,re.M),在一行中分配了变量的示例中,输出失败,例如,
d={
};e={
};
我应该打印但z不应该
potato = re.findall(r'^ *(\w+)\W*{',data,re.M)
这应该解决它。
编辑:
".*?(?<!\\)"|'.*?(?<!\\)'|\([^)(]*\)|#[^\n]*\n|[^\'\"\#(\w\n]*(\w+)[^\w]*?{
参见演示。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句