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

Regex 如何从字符串中删除第一个字符?,regex,Regex,之前: c3a848415acf99bd656edb67fe6f4473 MD5 : d7Sanne1949 8c20ef279947aa107e6e8043a3cb0975 MD5 : b0angela 1edd31297ccb89b719e998e11b0f14d1 MD5 : 6dviv13 ed3fcef597fd4f33cd2785f31a992bcf MD5 : 9barmagh98 2d078a00ce2cf322948d87be7cbe7979 MD5 : 13tmart123

之前:

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

d7Sanne1949
b0angela
6dviv13
9barmagh98
13tmart123

如何删除c3a848415acf99bd656edb67fe6f4473 MD5:、8c20ef279947aa107e6e8043a3cb0975 MD5等?

您的输入看起来像是以空格分隔的,您希望最后一件事情被输出,并且您有一个包含许多这样的行的文件,其中一些没有您想要输出的文本。因此,使用替换和捕获组,这里有一个正则表达式:

s/[^ ]+ MD5 : (.+)/\1/
(不过,应该注意的是,使用字符串拆分进行此操作要简单得多。)

下面是一些Python代码,用于打开文件并在每行上运行regex,打印出行的最后一位:

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)
Java示例:

String s = "c3a848415acf99bd656edb67fe6f4473 MD5 : d7Sanne1949";
  • 不带正则表达式

    System.out.println(s.substring(39));
    
    System.out.println(s.replaceAll(".* MD5 : ", ""));
    
    或者(根据肯特的评论):

  • 使用正则表达式

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


哪个编辑器?工具?操作系统?编程语言?很多。。。破折号?连字符?你能澄清一下吗?好的,我更新了我的答案,假设你想从文件中读取文本行,并打印出行的非MD5部分。投票赞成首先提供非regexp解决方案。“试着用regexp解决一个小问题,突然你就有了两个”。
System.out.println(s.replaceAll("[0-9|a-f]{32} MD5 : ", ""));