Regex acrescenta uma string a uma parte da correspondência

1

Eu acho isso muito difícil de fazer, a coisa é a seguinte:

Eu tenho uma string no formulário:

GlobalParameters::$docId = DocList::$PARTNERS;

E eu quero acrescentar a string _VIEW ao final do símbolo. O problema é que eu quero não apenas combinar PARTNERS , mas qualquer outro símbolo também, então eu tentei este regex:

Encontrar:

GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$(.*)\;

Substitua por:

GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$(.*)_VIEW\;

Mas acabei de receber:

GlobalParameters::$docId = DocList::$(.*)_VIEW;

Em todos os jogos. Como posso contornar isso?

    
por arielnmz 09.12.2014 / 22:32

2 respostas

0

A principal coisa errada é que o campo correspondente delimitado por ( e ) precisa ser identificado por na string de substituição:

GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$_VIEW\;

Também é importante notar que, embora sua implementação Geany não tenha esse padrão, muitos programas que usam expressões regulares usam como padrão o modo BRE (Basic Regular Expression), que exige que \( e \) delimitem a subexpressão de pesquisa. , como em:

GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$\(.*\)\;

Observação: Geany a partir da versão v1.24 não precisa que os parênteses tenham escape, então você precisa apenas de ( e ) para delimitar os campos correspondentes.

Outras seqüências de caracteres de pesquisa e substituição mais simples ocorrem para mim, mas sem ver o contexto de outras strings no arquivo, não tenho certeza do que pode ser satisfatório. No entanto, o seguinte deve ser OK: -

Pesquisa:

\(GlobalParameters\:\:\$docId\ \=\ DocList\:\:\$.*\)\;

Substituir:

_VIEW\;

Aqui, toda a cadeia de caracteres, além do ; correspondente, é correspondida e _VIEW é anexada.

    
por 09.12.2014 / 23:12
0

Para estender a resposta da AFH, fiz um exemplo mais complexo:

Sequência a ser modificada:

abc: 123

Pesquisa:

(abc)\: (123)

Substituir (1def será acrescentado à primeira expressão de correspondência e 456 à segunda):

def 56

Resultado:

abcdef 123456
    
por 15.01.2016 / 14:52

Tags