如何在Python中获取Tcl给定过程名称的过程定义

问题描述 投票:0回答:1

这就是我的方法

my sample.tcl contains
proc abc {} {
proc def {} {
}
}
proc qqq {} {
}

proc def {} {
}
code :
with open('sample.tcl', 'r') as file:
script = file.read()

proc_defs = re.findall(r'proc\\s+\\w+\\s+{(?:\[^{}\]*{\[^{}\]*})\*}', script, re.DOTALL)
for proc_def in proc_defs:
print("Procedure definition:", proc_def)

对于上面的例子,当我给出 abc 时它应该返回

proc abc {} {
proc def {} {
}
}

还有什么更好的办法吗

python tcl
1个回答
0
投票

您的正则表达式从语法和逻辑的角度来看都是无效的。 请你尝试一下:

import re

with open('sample.tcl', 'r') as file:
    script = file.read()

proc_defs = re.findall(r'proc\s+\w+\s+\{[^{}]*}\s+\{(?:[^{}]*|\{[^{}]*})*}', script, re.DOTALL)
for proc_def in proc_defs:
    print("Procedure definition:", proc_def)

输出:

('Procedure definition:', 'proc abc {} {\nproc def {} {\n}\n}')
('Procedure definition:', 'proc qqq {} {\n}')
('Procedure definition:', 'proc def {} {\n}')

如果您想选择

abc
的定义,请修改正则表达式: 将
\w+
替换为
abc

© www.soinside.com 2019 - 2024. All rights reserved.