Java正则表达式:将子串与新行匹配,后跟空格

时间:2011-02-03 16:33:38

标签: java regex newline whitespace

我目前正尝试通过将它们与正则表达式匹配来从字符串中提取子字符串。输入字符串都是foo.bar("""foobar""")形式,其中foobar是我想要提取的子字符串。 这是我为此任务编写的正则表达式:

Pattern pattern = Pattern.compile(
            ".+\\(\"{3}(.+)\"{3}\\)" , Pattern.MULTILINE);

它与简单的字符串匹配良好,但只要在要匹配的字符串中出现换行后跟空格,即foo.bar("""foo\n bar""")

,就会失败

我如何更改模式以使其与这些字符串匹配?

1 个答案:

答案 0 :(得分:7)

您需要Pattern.DOTALL而不是Pattern.MULTILINEPattern.MULTILINE是关于^$的行为,与使用.匹配换行符无关:

Pattern pattern = Pattern.compile(
     ".+\\(\"{3}(.+)\"{3}\\)" , Pattern.DOTALL);