perl 嵌套正则表达式
perl nested regex
文字记录:
(1,2,3,4,{fred,don,max,rat,grp},45,67,mat,jhon,{a,b,1,2,sd[{1,2},{4,5}],45,67,P[{34,56,34},{uni,cast,r}],c{q,ew,3,4},1,2,3,cf{2,4,5,8},6},4,fr{24,45,67},5,NOL)
期望的输出:
(1,2,3,4,{fred:don:max:rat:grp},45,67,mat,jhon,{a:b:1:2:sd[{1:2}:{4:5}]:45:67:P[{34:56:34}:{uni:cast:r}]:c{q:ew:3:4}:1:2:3:cf{2:4:5:8}:6},4,fr{24:45:67},5,NOL)
以下需要替换为:
{}
和 []
之间的所有内容
- 数据具有嵌套结构,如
{{}}
和 {[],[]}
- 文字记录总是在
()
. 之间
感谢任何有关 perl 的帮助。
您可以尝试下面的 perl 命令,它使用基于正则表达式的前瞻性。
perl -pe 's/,(?=(?:\{[^{}]*\}|[^{}])*})|,(?=(?:\[[^\[\]]*\]|[^\[\]])*\])/:/g' file
文字记录:
(1,2,3,4,{fred,don,max,rat,grp},45,67,mat,jhon,{a,b,1,2,sd[{1,2},{4,5}],45,67,P[{34,56,34},{uni,cast,r}],c{q,ew,3,4},1,2,3,cf{2,4,5,8},6},4,fr{24,45,67},5,NOL)
期望的输出:
(1,2,3,4,{fred:don:max:rat:grp},45,67,mat,jhon,{a:b:1:2:sd[{1:2}:{4:5}]:45:67:P[{34:56:34}:{uni:cast:r}]:c{q:ew:3:4}:1:2:3:cf{2:4:5:8}:6},4,fr{24:45:67},5,NOL)
以下需要替换为:
{}
和[]
之间的所有内容
- 数据具有嵌套结构,如
{{}}
和{[],[]}
- 文字记录总是在
()
. 之间
感谢任何有关 perl 的帮助。
您可以尝试下面的 perl 命令,它使用基于正则表达式的前瞻性。
perl -pe 's/,(?=(?:\{[^{}]*\}|[^{}])*})|,(?=(?:\[[^\[\]]*\]|[^\[\]])*\])/:/g' file