Como remover qualquer coisa não letras ou números de parte de linhas com expressões regulares?

0

Como faço para remover qualquer coisa que não seja letras ou números da parte de linhas no arquivo txt?

Mais explicando, tenho username:password ou username;password .

Quero editar apenas o nome de usuário e remover qualquer coisa que não seja letras ou números sem tocar na senha. Eu gostaria de fazer isso com Expressões Regulares, já que estou usando o Emeditor For Large Files e acredito que as Expressões Regulares funcionem em Notepad++ e Emeditor .

O que eu tentei?
Eu usei Find: [^a-z0-9:;]+ , mas não posso pular a senha após : ou ; , então o que eu quero fazer é pular o início da linha de :password here e ;password here e remover apenas nenhuma letra ou número do nome de usuário sozinho. / p>

Desculpe se não descrevi tudo bem, os administradores podem editar, se possível.

Exemplo completo de linhas:

!start._1:stop.~1@
Sta%rs&:B!ge(s+R}\
#Step[14,:St,./\Ert'
~user@#%name^*)+:P@$$wor'";D
T&*est~!@#$%^&*()_+={}|\;pass;word123
user@#%name;password!#$~''123
45Star^5#$Lord1:@T1esting!
u~s#e%r^n&a*m(e)t_e+s-t,:Pa:ssw/orD$+;

Resultado necessário:

start1:stop.~1@
Stars:B!ge(s+R}\
Step:St,./\Ert'
username:P@$$wor'";D
Test;pass;word123
username;password!#$~''123
45Star5Lord1:@T1esting!
usernametest:Pa:ssw/orD$+;
    
por DeathRival 15.10.2017 / 14:58

1 resposta

1

Não pode ser feito de uma só vez.
Aqui está uma maneira de fazer o trabalho com várias passagens:

  • Ctrl + H
  • Encontre o que: ^([^a-z0-9;:]*)([a-z0-9]*)(?1)(.*?[;:].+$)
  • Substituir por: $2$3
  • Desmarque o caso de correspondência
  • check Embrulhe
  • verificar expressão regular
  • NÃO VERIFIQUE . matches newline
  • Substituir tudo (Clique aqui quantas vezes forem necessárias, substitui apenas uma parte de caracteres inválidos de cada vez)

Explicação:

^                   : begining of line
  (                 : start group 1
    [^a-z0-9;:]*    : negative character class, 0 or more any character that is not alpha-num or colon or semicolon
  )                 : end group 1
  (                 : start group 2
    [a-z0-9]*       : character class, 0 or more alpha-num
  )                 : end group 2
  (?1)              : re-use the pattern in group 1 (ie. [^a-z0-9;:]*)
  (                 : group 3
    .*?             : 0 or more any character but newline, not greedy
    [;:]            : a colon or semicolon (the first that exists in a line)
    .+              : 1 or more any character but newline (the password)
    $               : end of line
  )                 : end group 3

Substituição:

$2      : content of group 2, the alpha-num part of the name
$3      : content of group 3, rest of the line

Resultado para o exemplo dado:

start1:stop.~1@
Stars:B!ge(s+R}\
Step14:St,./\Ert'               <== I guess there is a typo in your request
username:P@$$wor'";D
Test;pass;word123
username;password!#$~''123
45Star5Lord1:@T1esting!
usernametest:Pa:ssw/orD$+;
    
por 15.10.2017 / 18:11