Рассмотрим следующую строку, которая является фрагментом C в файле:
strcat(errbuf,errbuftemp);
Я хочу заменить errbuf (но не errbuftemp) на префикс G-> plus errbuf. Чтобы сделать это успешно, я проверяю символ после и символ перед errbuf, чтобы увидеть, есть ли он в списке разрешенных символов, и затем выполняю замену.
Я создал следующий файл Ruby:
line = " strcat(errbuf,errbuftemp);"
item = "errbuf"
puts line.gsub(/([ \t\n\r(),\[\]]{1})#{item}([ \t\n\r(),\[\]]{1})/, "#{$1}G\->#{item}#{$2}")
Ожидаемый результат:
strcat(G->errbuf,errbuftemp);
Фактический результат
strcatG->errbuferrbuftemp);
По сути, совпадающие символы до и после errbuf не вставляются обратно с выражением замены.
Кто-нибудь может указать, что я делаю неправильно?