匹配函数参数以递归pcre regexp结尾

时间:2019-01-01 22:49:29

标签: pcre

我的目标是改变这一点

({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的解决方案尽可能少。

1 个答案:

答案 0 :(得分:0)

我想我可以用这个正则表达式做我想做的事 https://regex101.com/r/Zf8L4q/3

([(,])(\s*)((?:[^(),'"<>{}[\]]*(?:\<(?:[^<>]*?|(?3))*\>|\((?:[^()]*?|(?3))*\)|\[(?:[^[\]]*?|(?3))*\]|\{(?:[^{}]*?|(?3))\}|'(?:[^'\\]+|\\.)*')?)*)(\)?)

相关问题