为了解密消息,我需要先找到密钥。根据给定的信息,我发现密钥是字符串的一部分:
str =“251220825122082”
我们可以很容易地知道密钥应该是“2512208
”,因为密钥应该在加密消息时重复使用。但是,我尝试了很多方法并得到了答案“25122082
”,最后又增加了2个,但它只是密钥的另一个开头。
我尝试的方法:
String repeated = str.replaceAll("(.+?)\\1+", "$1");
这两个提供相同的答案(“25122082
”)。
任何人都可以帮我解决这个问题吗?
谢谢!
答案 0 :(得分:0)
感谢@ajb,使用find()和group()解决了这个问题。
String str = "251220825122082";
Pattern p = Pattern.compile("(.+?)\\1+");
Matcher m = p.matcher(str);
while (m.find()) {
String repeated = m.group(1);
System.out.println(repeated);
}
输出:2512208