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

1 投票
1 回答
880 浏览
提问于 2025-04-18 16:13

我需要在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)),而且每个这样的调用都应该对应一个set_max_overload的调用,比如set_max_overload(case1, 1.1)

我该如何用正则表达式(最好是PyCharm支持的)来完成这个文本转换呢?

1 个回答

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)

正如你所看到的... 这太复杂了.. 写一个简单的解析器... 可能会更简单。

撰写回答