我怎样才能得到
Text t;
Graph g;
Run Code Online (Sandbox Code Playgroud)
从
// Co
Text t;
Graph g;
// Co
Run Code Online (Sandbox Code Playgroud)
?
// Co\r?\n(.*)\r?\n// Co
Run Code Online (Sandbox Code Playgroud)
当有一行时有效,但不适用于多行.
默认情况下,.匹配除换行符(\n)之外的任何字符,但您也可以使用该Pattern.DOTALL标志使其与换行符匹配.所以,例如,而不是这个:
final Pattern pat = Pattern.compile("// Co\r?\n(.*)\r?\n// Co");
Run Code Online (Sandbox Code Playgroud)
你会用这个:
final Pattern pat = Pattern.compile("// Co\r?\n(.*)\r?\n// Co", Pattern.DOTALL);
Run Code Online (Sandbox Code Playgroud)
同样,您可以s使用以下任一样式在正则表达式本身内设置标志:
final Pattern pat = Pattern.compile("// Co\r?\n((?s).*)\r?\n// Co");
final Pattern pat = Pattern.compile("// Co\r?\n(?s:(.*))\r?\n// Co");
Run Code Online (Sandbox Code Playgroud)
它可以让你准确控制正则表达式的哪一部分接受换行符..(但我坚持使用这种DOTALL方法,除非你有一个正则表达式,.有时候意味着一件事,有时候是另一件事.)
编辑添加:似乎很可能 - 但你必须根据你的用例自己确定这个,你需要使用非贪婪的量化.*?,而不是贪婪的量化.*.