我有一个包含多行的字符串,我想在该多行中找到特定的模式,例如
String s = "foo\r\nbar\r\nfoo"
+ "foo, bar\r\nak + "
+ "foo, bar\r\nak + "
+ "bar, bar\r\nak + "
+ "blr05\r\nsdfsdkfhsklfh";
上面的字符串是一个多行字符串,我想在其中找到“ak”并获取它在 +
之后的下一个单词,在我的示例中是 foo,bar,blr05
为此,我创建了模式 Pattern.compile("^ak\\s*+\\s*(\\w+)")
但它在 matcher.find( )
本身返回 false。
最佳答案
默认情况下,正则表达式仅匹配单行内的文本。有两种修改方法。因此,适合您的一种解决方案是编写
Pattern.compile("^ak\\s*+\\s*(\\w+)", Pattern.MULTILINE);
添加额外参数将为您提供一个可跨多行匹配的Pattern
。
更新
正如 sln 所指出的,您原来的正则表达式没有多大意义,因为 *
后面有 +
。您的意思可能是 "^ak\\s*\\+\\s*(\\w+)"
- 也就是说,转义 +
使其成为文字。
关于java - 如何使用java的模式匹配器匹配包含多行的字符串中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44340023/