我需要在IntelliJ PyCharm编辑器中对Python代码执行一些复杂的文本替换。问题在于我必须将变量数量的元素转换为相应的元素集,而我只是不知道如何使用正则表达式进行此操作(甚至可能吗?)
我需要转换例如以下文字:
Contingency([line1], [Case(case1, 1.1), Case(case2, 2)])
对此(例如):
Contingency([line1], [Case(case1), Case(case2)]).set_max_overload(case1, 1.1).set_max_overload(case2, 2)
请注意,Case
调用(例如Case(case1, 1.1)
)必须转换为仅保留第一个参数(例如Case(case1)
),并且每个此类调用应该导致相应的{ {1}}致电,例如set_max_overload
。
如何使用正则表达式执行所需的文本转换(最好由PyCharm支持)?
答案 0 :(得分:0)
正则表达式可以这样写:
Contingency\(\[(\w+)\], \[(?:Case\((\w+), ([\d\.]+)\))?, (?:Case\((\w+), ([\d\.]+)\))\]\)
但是替换很复杂......替换不会改变......
Contingency([$1], [Case($2), Case($4)]).set_max_overload($2, $3).set_max_overload($4, $5)
如你所见......它过于复杂..编写简单的解析器......可以更简单。