Regex para substituir certas palavras no LibreOffice Writer

0

No LibreOffice Writer, quero usar o regex para pesquisar todas as palavras que começam com a letra c e substituí-las por si mesmas e por outra palavra.

Para a primeira parte, eu uso o seguinte e está tudo bem.

\bc[a-z]+

Ainda para a parte de substituição, quando escrevo

& text

ele substitui cat por & text em vez de cat text .

O que estou fazendo de errado?

    
por Cezar B 03.02.2017 / 23:33

2 respostas

1

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 .

    
por 04.02.2017 / 02:55
0

A expressão "find" não contém parênteses para capturar a palavra.

\b(c[a-z]+)

A expressão "replace" está correta como está.

Documentação: link

    
por 04.02.2017 / 00:11