Как удалить что-либо, кроме букв или цифр, из части строк в текстовом файле?

Больше объяснений у меня есть username:password или username;password .

Я хочу отредактировать только имя пользователя и удалить все, кроме букв или цифр, без прикосновения к паролю. Я хотел бы сделать это с регулярными выражениями, так как я использую Emeditor For Large Files, и я считаю, что регулярные выражения работают как в Notepad++ и в Emeditor .

Что я пробовал?
Я использовал Find: [^a-z0-9:;]+ но не могу пропустить пароль после : или ; так что я хочу пропустить начало строки с :password here и ;password here и только удалить только буквы или цифры только из имени пользователя.

Извините, если я не все хорошо описал, администраторы могут редактировать, если это возможно.

Полный пример строк:

!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$+;

Необходимый результат:

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$+;

1 ответ1

1

Это не может быть сделано за один проход.
Вот способ сделать работу с несколькими проходами:

  • Ctrl+H
  • Найдите что: ^([^a-z0-9;:]*)([a-z0-9]*)(?1)(.*?[;:].+$)
  • Заменить на: $2$3
  • Снять флажок
  • проверить обернуть
  • проверьте регулярное выражение
  • НЕ ПРОВЕРИТЬ . matches newline
  • Заменить все (нажмите здесь столько раз, сколько необходимо, каждый раз заменяется только часть недопустимых символов)

Объяснение:

^                   : 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

Замена:

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

Результат для данного примера:

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$+;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .