como encontrar e excluir certos regex no editor de texto geany?

0

Eu tenho um texto de exemplo assim:

\documentclass[a4paper]{article}
\usepackage[a4paper,margin=2cm]{geometry}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{color}
\setlength{\parindent}{0em}
\setlength{\parskip}{2ex plus1ex minus0.5ex}
\newcommand{\stylea}[1]{\noindent{\textcolor[rgb]{0.9, 0.9, 0.8}{\fcolorbox[rgb]{0, 0, 0}{0.2, 0.2, 0.2}{#1}}}}

\begin{document}
\ttfamily
\setlength{\fboxrule}{0pt}
\setlength{\fboxsep}{0pt}
1 \stylea{\# Author{\hspace*{1em}}: Bhishan Poudel} \
2 \stylea{\# Date{\hspace*{1em}}{\hspace*{1em}}: May 19, 2016} \
3 \stylea{} \
4 \stylea{Line wrapping in geany} \
5 \stylea{===============================================================================} \
6 \stylea{edit > preference > editor > features > line wrapping} \
7 \stylea{then,} \
8 \stylea{document > line wrapping} \
\end{document}

Eu quero excluir todas as palavras \ stylea {} mantendo as palavras dentro {} intactas.

Eu sei que posso encontrar e substituir \ stylea {e substituir por espaço em branco, mas eu nem quero espaços em branco e também quero excluir o fechamento} ao mesmo tempo.

Também podemos substituir palavras em apenas blocos selecionados em geany? por exemplo. se eu selecionar as linhas de 1 a 8 e substituir stylea por styleb?

Obrigado antecipadamente!

    
por I_am_Groot 19.05.2016 / 18:32

1 resposta

1

Substituindo pelo Grep

Você pode fazer (a maioria) com pesquisa / substituição de expressões regulares.

Use a caixa de diálogo Substituir, certificando-se de que "Usar expressões regulares" esteja selecionado e "Usar correspondência de várias linhas" não seja.

Pesquisar por:

\stylea{(.*)}

E substitua por:


Esta é uma expressão regular "back reference" para o texto "capturado" na expressão de pesquisa (a parte dentro dos parênteses). Se você tivesse várias capturas, poderia consultá-las com , , etc.

No entanto, lembre-se de que há uma limitação nas expressões regulares que provavelmente causará algum pesar. Você tem algumas linhas onde você tem colchetes encaixados dentro do texto, como:

\stylea{\# Date{\hspace*{1em}}{\hspace*{1em}}: May 19, 2016}

As expressões regulares não podem (por si) contar e corresponder aos delimitadores de aninhamento ( {} ) dessa forma. No seu caso, isso pode não acabar sendo um problema prático, porque a captura de (.*) irá corresponder a tantos caracteres quanto possível antes do final da linha ("correspondência gulosa"), que no seu texto de exemplo acontece para fazer o direito coisa, porque cada tag \stylea{} está em uma linha. Se você tiver arquivos com tags \stylea{} abrangendo várias linhas, esse método não substituirá o texto corretamente. Sua melhor opção pode ser encontrar essas instâncias primeiro e alterá-las manualmente ou garantir que elas não abranjam várias linhas.

Isso deve funcionar com muitos editores que oferecem pesquisa / substituição de expressão regular, embora os detalhes das opções de diálogo sejam variados. Eu testei no TextWrangler para Mac OS X.

Substituindo apenas na seleção

Selecione as 8 linhas numeradas. Pesquisar por:

\stylea{

E substitua por:

\styleb{

Em seguida, clique no botão "Em seleção" na caixa de diálogo Substituir.

    
por 19.05.2016 / 21:22