s/"value=.*\+1)/"(Date.new + 1.month).strftime(%B)"/ ^^^
Você tem o operador *
zero ou mais de repetição seguido por \+
. O significado de \+
depende da versão do sed. Pode corresponder a +
ou \+
ou pode ser o operador de uma ou mais repetições. O GNU sed trata \+
como o operador de uma ou mais repetições, exceto em um contexto onde não faria sentido - como aqui, seguindo outro operador de repetição. Eu acho que o sed do OSX trata \+
como o operador de uma ou mais repetições, e reclama aqui porque dois operadores de repetição consecutivos não fazem sentido.
No sed, para corresponder a +
, escreva +
.
¹ Bem, faria sentido, mas todas as seqüências de operadores de repetição, exceto {…}
, podem ser reduzidas a uma única, então a maioria dos mecanismos de regexp as tratam especialmente.