Executa múltiplos regex um após o outro ou combina múltiplos regex em um

0

Estou usando o notepad ++, escrevi alguns regex que facilitaram meu trabalho no arquivo de formatação. No entanto, para formatar o arquivo no formato desejado eu tenho que executar regex múltipla, eu queria saber se há alguma maneira possível, onde vou armazenar minha lista de expressões regulares e vai executar um após o outro.

Aqui está o arquivo tree.txt que precisa ser formatado.

overview/Main_Overview/Gas Management/BOG MV/BOG MV Process Alarms:Tag=BOG Heaters Process Alarms:Device=:Color=-3355444
overview/Main_Overview/Gas Management/BOG MV/BOG MV Process Trip:Tag=BOG Heaters Process Alarms-1:Device=:Color=-3355444
overview/Main_Overview/Gas Management/BOG MV/BOG MV External Trip:Tag=BOG Heaters Process Alarms-1-1:Device=:Color=-3355444

O regex truncará acima do texto e organizará nesse formato sed.

s/BOG Heaters Process Alarms:/BOG MV Process Alarms:/g
s/BOG Heaters Process Alarms-1:/BOG MV Process Trip:/g
s/BOG Heaters Process Alarms-1-1:/BOG MV External Trip:/g

Para alcançar o resultado acima, vou fazer um conjunto de operações de regex, uma após a outra.

Find- .*/
Replace- 

Find- Device=:.*
Replace- 

Find- :Tag=
Replace- /

Find- (^.*/)([^/]+):
Replace- // 

Find- ^
Replace- s

Find- $
Replace- g

Depois de regex acima, eu obtenho o formato desejado, no entanto, preciso saber se isso pode ser combinado para que eu não precise fazer manualmente após cada expressão ser concluída ou reduzir para uma expressão. Obrigado

    
por gadhvi 23.05.2018 / 15:49

1 resposta

0

Você já tem os elementos de que precisa, especialmente o agrupamento. Você precisa encontrar:

^.*/(.*:)Tag=(.*:)Device=.*$

Em seguida, substitua por:

s///g

Observe que isso fornece os parâmetros sed que você cita como o que você deseja produzir, enquanto sua sequência omitiria os dois pontos na string sed find e adicionaria um espaço em branco inicial na string de substituição sed , fornecendo: -

s/BOG Heaters Process Alarms/ BOG MV Process Alarms:/g
s/BOG Heaters Process Alarms-1/ BOG MV Process Trip:/g
s/BOG Heaters Process Alarms-1-1/ BOG MV External Trip:/g

Para reproduzir sua sequência, você precisaria procurar:

^.*/(.*):Tag=(.*:)Device=.*$

Em seguida, substitua por:

s// /g

No entanto, as substituições de sed não funcionarão, a menos que sejam feitas na ordem inversa.

    
por 23.05.2018 / 17:48