As outras respostas quase acertaram. A expressão de localização está correta:
\b(c[a-z]*)\b
Eu usei *
no lugar de +
para corresponder c
como uma única palavra e adicionei um \b
à direita para tornar os limites de palavras mais claros, mas a forma original está OK.
A string de substituição deve ser:
$1 text
Isso está de acordo com o link de documentação de Jim K, mas é bastante confuso nessa área.
Especificamente, pode ser usado na expressão de pesquisa para repetir uma string correspondida anteriormente na expressão, mas
$1
deve ser usado na string de substituição. O uso na string de pesquisa significa que (a.b).*
corresponderá a a
e b
com um caractere entre, seguido por a
e b
com o mesmo caractere . Isso não é o mesmo que a.b.*a.b
, onde os caracteres intervenientes podem ser diferentes. O exemplo no link da documentação está correto, mas não faz nada para explicar onde será útil.
Como nota final, minha versão 5.1.4.2 do LibreOffice Writer se recusa a fazer substituições quando a string de pesquisa começa com \b
, embora encontre todas as instâncias corretamente; um \b
à direita funciona como esperado. Este é um bug - o OpenOffice 4.1.3 funciona corretamente. A rodada de trabalho é usar ([^a-z]\bc[a-z]*)\b
como a string de pesquisa com a mesma string de substituição: isso funciona em todos os casos, exceto quando a primeira palavra do documento começa com c
.