如何在PyCharm中使用正则表达式执行此文本转换?

时间:2014-08-06 09:58:44

标签: python regex intellij-idea pycharm

我需要在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支持)?

1 个答案:

答案 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)

如你所见......它过于复杂..编写简单的解析器......可以更简单。