如何从字符串中删除第一个字符?

时间:2014-12-06 00:45:23

标签: regex

之前:

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

之后:

d7Sanne1949
b0angela
6dviv13
9barmagh98
13tmart123

如何删除c5a848415acf99bd656edb67fe6f4473 MD5:,8c20ef279947aa107e6e8043a3cb0975 MD5等?

2 个答案:

答案 0 :(得分: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 : ", ""));
    

答案 1 :(得分: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)