Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在PyCharm中使用正则表达式执行此文本转换?_Python_Regex_Intellij Idea_Pycharm - Fatal编程技术网

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

Python 如何在PyCharm中使用正则表达式执行此文本转换?,python,regex,intellij-idea,pycharm,Python,Regex,Intellij Idea,Pycharm,我需要在编辑器中对Python代码执行有点复杂的文本替换。问题在于我必须将一个变量个数的元素转换成一组对应的元素,而我只是不知道如何使用regex来实现这一点(这可能吗?) 例如,我需要转换以下文本: Contingency([line1], [Case(case1, 1.1), Case(case2, 2)]) 为此(例如): 请注意,Case调用(例如Case(case1,1.1))必须转换为仅保留第一个参数(例如Case(case1)),并且每个这样的调用都应该导致相应的set\u ma

我需要在编辑器中对Python代码执行有点复杂的文本替换。问题在于我必须将一个变量个数的元素转换成一组对应的元素,而我只是不知道如何使用regex来实现这一点(这可能吗?)

例如,我需要转换以下文本:

Contingency([line1], [Case(case1, 1.1), Case(case2, 2)])
为此(例如):

请注意,
Case
调用(例如
Case(case1,1.1)
)必须转换为仅保留第一个参数(例如
Case(case1)
),并且每个这样的调用都应该导致相应的
set\u max\u重载
调用,例如
set\u max\u重载(case1,1.1)


如何使用正则表达式(最好由PyCharm支持)执行所需的文本转换?

Regex可以这样编写:

Contingency\(\[(\w+)\], \[(?:Case\((\w+), ([\d\.]+)\))?, (?:Case\((\w+), ([\d\.]+)\))\]\)
但是替换是复杂的。。。替代品不能改变

Contingency([$1], [Case($2), Case($4)]).set_max_overload($2, $3).set_max_overload($4, $5)

如你所见。。。太夸张了。。正在编写简单的解析器。。。可以更简单。

那么你是说这个问题基本上是正则表达式无法解决的?如果是这样的话,我没问题,如果做不到,就做不到。我的意思是,如果替换不能用正则表达式完成,请回答这个问题。@aknuds1,是和否。你可以用正则表达式替换它,但是对于每个不同的参数计数,使用不同的正则表达式和替换字符串。通用正则表达式和替换不能组合。嗯,基本上是一样的。我想要的是一个通用正则表达式。你可以在你的答案中声明,这个问题是正则表达式无法解决的,因为你不能有一个可变数量的替换。
Contingency([$1], [Case($2), Case($4)]).set_max_overload($2, $3).set_max_overload($4, $5)