我有一个包含多行的字符串,我想在多行中找到一个特定的模式,例如
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。
答案 0 :(得分:2)
默认情况下,正则表达式仅匹配单行内的文本。有两种方法可以修改它。所以适合你的一个解决方案就是写
Pattern.compile("^ak\\s*+\\s*(\\w+)", Pattern.MULTILINE);
添加额外参数会为您提供一个匹配多行的Pattern
。
<强>更新强>
正如sln所指出的那样,由于+
之后的*
,你原来的正则表达式没有多大意义。您可能意味着"^ak\\s*\\+\\s*(\\w+)"
- 也就是说,转义+
以使其成为文字。