首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有换行符的字符串中查找字符串( \n )

在带有换行符的字符串中查找字符串( \n )
EN

Stack Overflow用户
提问于 2015-04-21 16:15:32
回答 2查看 53关注 0票数 1

我需要在两个自定义头之间找到一个字符串。

下面是我正在使用的字符串,我希望能够提取“--开始CGP消息--\n”和“--开始CGP密钥--\n”之间的字符串部分,或者任何其他的小标题内容。

代码语言:javascript
复制
---BEGIN CGP MESSAGE---\n
EoEZ1Qio8/BY/vl9iGblkg==\n
---BEGIN CGP KEY---\n
dOo23Ar23p4v6So70O65E6ImFnzuYrVro3nXFi5s4RUdczLITEDNcUefRiOgyEKWJKR/CW1DeLITPlT7RjV3FQRIz8sIdsW8Zuq9E4u6ad5n+EPxC80IfhdrThJPs/T6yuaVW3s+45mnyGMHvhEatwwkqtJZydfBKz3qb/JUkf0=\n
---END CGP MESSAGE---\n

无论我在哪里看建议正则表达式,它的格式通常都是这样的(我用我想要的参数替换了它们使用的示例)

代码语言:javascript
复制
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代码对我来说是行不通的。这就是为什么我发布了这个问题,我在这个网站上尝试过的解决方案不起作用。其他答案通常是这段代码的变体,或者只是不适合我的目的。

哦,而且我不能使用依赖于字符的整数位置的字符串拆分。标题之间的字符串将具有不同的长度,因此程序必须能够容纳它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-21 16:18:13

您需要告诉模式来考虑点的linfeed。

代码语言:javascript
复制
Pattern.compile("---BEGIN CGP MESSAGE---(.*?)---BEGIN CGP KEY---", Pattern.DOTALL);
票数 3
EN

Stack Overflow用户

发布于 2015-04-21 16:21:57

可以添加修饰符(?s)以匹配新行字符:

代码语言:javascript
复制
(?s)---BEGIN CGP MESSAGE---(.*?)---BEGIN CGP KEY---

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29777788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档