我的目标是改变这一点
({1, 2}, foo, [2, 3], foo, (3, 4), (3, 4))
进入
(
{1, 2},
foo,
[2, 3],
foo,
(3, 4),
(3, 4)
)
如果您想知道此处的功能在哪里,只需在开头添加foo
。
我试图用这样的东西匹配反向线
(\s*)[),](?:(\}(?:[^{}]*|(?R))*\{|\)(?:[^()]*|(?R))*\(|\](?:[^[\]]*|(?R))*\[)\w*)
这里的想法是匹配模式,该模式以可能是空的空白组(我想用换行符替换)开头,然后是逗号,然后是可能包含列表,函数调用,集合等的参数。
我正在尝试通过简单地使用替代来实现所有目标。但是现在我必须使用一些代码来完成我想要的事情。
不要费心建议使用代码格式化程序。我了解他们。我希望根据需要使用最小的正则表达式使用pcre的解决方案尽可能少。
答案 0 :(得分:0)
我想我可以用这个正则表达式做我想做的事 https://regex101.com/r/Zf8L4q/3
([(,])(\s*)((?:[^(),'"<>{}[\]]*(?:\<(?:[^<>]*?|(?3))*\>|\((?:[^()]*?|(?3))*\)|\[(?:[^[\]]*?|(?3))*\]|\{(?:[^{}]*?|(?3))\}|'(?:[^'\\]+|\\.)*')?)*)(\)?)