2015-07-13 5 views
-3

Текст записи:Perl вложенная регулярное выражение

(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) 

потребности быть заменить: на ниже:

  1. Все между {} и []
  2. Данные имеют вложенную структуру, такую ​​как {{}} и {[],[]}
  3. Текстовая запись всегда находится между ().

Любая помощь с perl оценивается.

+2

Вы должны показать некоторые усилия с вашей стороны тоже. – serenesat

ответ

-2

Вы можете попробовать следующую команду perl, в которой используется позиционное выражение regex.

perl -pe 's/,(?=(?:\{[^{}]*\}|[^{}])*})|,(?=(?:\[[^\[\]]*\]|[^\[\]])*\])/:/g' file 

DEMO

+0

Спасибо Avinash ... Одна проблема заключается в том, что он не заменяется на: a, b, 1,2 ........... {a, b, 1,2, sd [{1: 2}: {4: 5}], 45,67, Р [{34:56:34}: {уни: литой: г}], С {д: EW: 3: 4}, 1,2,3, cf {2: 4: 5: 8}: 6}, 4, fr {24:45:67} – yuvi

+0

проверить сейчас ....... –

+0

Спасибо Авинаш, это работает. Я загружу это для полного набора данных. – yuvi

 Смежные вопросы

  • Нет связанных вопросов^_^