我需要在两个自定义头之间找到一个字符串。
下面是我正在使用的字符串,我希望能够提取“--开始CGP消息--\n”和“--开始CGP密钥--\n”之间的字符串部分,或者任何其他的小标题内容。
---BEGIN CGP MESSAGE---\n
EoEZ1Qio8/BY/vl9iGblkg==\n
---BEGIN CGP KEY---\n
dOo23Ar23p4v6So70O65E6ImFnzuYrVro3nXFi5s4RUdczLITEDNcUefRiOgyEKWJKR/CW1DeLITPlT7RjV3FQRIz8sIdsW8Zuq9E4u6ad5n+EPxC80IfhdrThJPs/T6yuaVW3s+45mnyGMHvhEatwwkqtJZydfBKz3qb/JUkf0=\n
---END CGP MESSAGE---\n无论我在哪里看建议正则表达式,它的格式通常都是这样的(我用我想要的参数替换了它们使用的示例)
String str = sb.toString();
Pattern pattern = Pattern.compile("---BEGIN CGP MESSAGE---(.*?)---BEGIN CGP KEY---");
Matcher matcher = pattern.matcher(str);
while (matcher.find()) {
System.out.println(matcher.group(1).toString());
}(某人是建在上面的字符串建设者。)
不幸的是,当我运行这段代码时,它没有打印我想要的行"EoEZ1Qio8/BY/vl9iGblkg==“。我没有发现任何错误,它只是没有在控制台中打印任何内容。
我不知道为什么,但是使用这个精确的regex代码对我来说是行不通的。这就是为什么我发布了这个问题,我在这个网站上尝试过的解决方案不起作用。其他答案通常是这段代码的变体,或者只是不适合我的目的。
哦,而且我不能使用依赖于字符的整数位置的字符串拆分。标题之间的字符串将具有不同的长度,因此程序必须能够容纳它。
发布于 2015-04-21 16:18:13
您需要告诉模式来考虑点的linfeed。
Pattern.compile("---BEGIN CGP MESSAGE---(.*?)---BEGIN CGP KEY---", Pattern.DOTALL);发布于 2015-04-21 16:21:57
https://stackoverflow.com/questions/29777788
复制相似问题