考虑下面的字符串,可以在一个文件中的C程序段:为什么这个Ruby不像预期的那样替换正则表达式?
strcat(errbuf,errbuftemp);
我想用前缀G->加errbuf更换errbuf(但不errbuftemp)。要做到这一点,我检查后面的字符和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不重新插入回用替换表达式。
任何人都可以指出我做错了什么?
权上,通过您所提供的线索看,并想出了: 提出line.gsub(/([\ t \ n \ r(),\\ [ \\]] {1})#{item}([\ t \ n \ r(),\\ [\\]] {1})/){“#{$ 1} G \ - >#{item} #{$ 2}“} – Theo 2010-10-22 05:37:53