Como excluir todo o texto, exceto o que está entre duas strings (Notepad ++)

2

Eu tenho que truncar todos os loginIDs de um arquivo de 17k. Como excluo todo o texto, exceto o que há entre duas strings?

EG:

<USER_LOGIN_ID>user1</USER_LOGIN_ID>

<USER_LOGIN_ID>user2</USER_LOGIN_ID>

<USER_LOGIN_ID>user3</USER_LOGIN_ID>

<USER_LOGIN_ID>user4</USER_LOGIN_ID>

sairia

user1

user2

user3

user4

    
por user2827773 17.10.2017 / 18:22

2 respostas

1

Esta é uma expressão regular ligeiramente complexa:

Localizar: <USER_LOGIN_ID>([^<]*)</USER_LOGIN_ID> Substitua: $1

Aqui você está combinando <USER_LOGIN_ID> , seguido por qualquer número de caracteres que não são < , seguidos por </USER_LOGIN_ID> . Os parênteses () marcam o texto central como um campo e $1 na cadeia de substituição é expandido apenas para esse campo correspondente.

Para a instância que você mostra de apenas uma correspondência por linha, é possível usar a string de localização um pouco mais simples <USER_LOGIN_ID>(.*)</USER_LOGIN_ID> , mas isso falhará se houver dois log-ins por linha.

Se houver vários logins em uma única linha, a primeira localização irá concatenar as strings, a menos que haja uma pontuação intermediária no texto fonte (se não, você terá que adicioná-lo à string substituta, por exemplo, $1 - com espaço seguinte).

Você precisará marcar a expressão regular (e provavelmente combinar maiúsculas e minúsculas) nas opções.

    
por 17.10.2017 / 18:50
0

Pesquisar por:

<USER_LOGIN_ID>(.*?)</USER_LOGIN_ID>

Substitua por:


A expressão .*? representa o texto mais curto possível entre as duas tags especificadas. (O ponto de interrogação torna a correspondência não-gulosa.)

    
por 17.10.2017 / 19:48