如何匹配String中的单词包含使用java的模式匹配器的多行

时间:2017-06-03 03:44:53

标签: java regex pattern-matching

我有一个包含多行的字符串,我想在多行中找到一个特定的模式,例如

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。

1 个答案:

答案 0 :(得分:2)

默认情况下,正则表达式仅匹配单行内的文本。有两种方法可以修改它。所以适合你的一个解决方案就是写

Pattern.compile("^ak\\s*+\\s*(\\w+)", Pattern.MULTILINE);

添加额外参数会为您提供一个匹配多行的Pattern

<强>更新
正如sln所指出的那样,由于+之后的*,你原来的正则表达式没有多大意义。您可能意味着"^ak\\s*\\+\\s*(\\w+)" - 也就是说,转义+以使其成为文字。