2014-12-06 6 views
0

До:Как удалить первые символы из строк?

c3a848415acf99bd656edb67fe6f4473 MD5 : d7Sanne1949 
8c20ef279947aa107e6e8043a3cb0975 MD5 : b0angela 
1edd31297ccb89b719e998e11b0f14d1 MD5 : 6dviv13 
ed3fcef597fd4f33cd2785f31a992bcf MD5 : 9barmagh98 
2d078a00ce2cf322948d87be7cbe7979 MD5 : 13tmart123 

После:

d7Sanne1949 
b0angela 
6dviv13 
9barmagh98 
13tmart123 

Как удалить c3a848415acf99bd656edb67fe6f4473 MD5:, 8c20ef279947aa107e6e8043a3cb0975 MD5, и т.д.?

+1

какой редактор? инструмент? ОПЕРАЦИОННЫЕ СИСТЕМЫ? язык программирования? – Kent

ответ

0

Ваш ввод выглядит так, будто он ограничен пространством, вы хотите, чтобы последнее выводилось, И у вас есть файл со многими, многими такими строками, некоторые из которых не имеют текста, который вы хотите выводить. Поэтому, используя подстановку и захватив группы, вот регулярное выражение:

s/[^ ]+ MD5 : (.+)/\1/ 

(. Хотя, как следует отметить, что это намного проще сделать это с помощью строки расщепления)

Вот некоторые Python код, который открывает файл и запускает регулярное выражение на каждой строке, распечатав последний бит строки:

import re 
my_matcher = re.compile(r"[^ ]+ MD5 : (.+)") 
def print_extraction(target_string): 
    match_result = my_matcher.match(target_string) 
    if match_result: 
     print match_result.group(1) 

target_file = "my_md5s.txt" 
with open(target_file) as f: 
    for line in f: 
     print_extraction(line) 
+0

пример пожалуйста: D –

+0

У меня много –

+0

Много ... тире? Дефис? Не могли бы вы уточнить, пожалуйста? – PlasmaSauna

1

примеры Java для:

String s = "c3a848415acf99bd656edb67fe6f4473 MD5 : d7Sanne1949"; 
  • без регулярных выражений:

    System.out.println(s.substring(39)); 
    

    или (в соответствии с комментарием Кента):

    System.out.println(s.split(" ")[3]); 
    
  • с использованием регулярных выражений:

    System.out.println(s.replaceAll(".* MD5 : ", "")); 
    

    или

    System.out.println(s.replaceAll("[0-9|a-f]+ MD5 : ", "")); 
    

    или

    System.out.println(s.replaceAll("[0-9|a-f]{32} MD5 : ", "")); 
    
+2

Почему не 'split()'? – Kent

+1

Активировано только для обеспечения решения без регулярного выражения. * «Попробуйте решить тривиальную проблему с регулярными выражениями, и вдруг у вас будет два» *. –

Смежные вопросы