如何在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)
),而且每个这样的调用都应该对应一个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)
正如你所看到的... 这太复杂了.. 写一个简单的解析器... 可能会更简单。