我怎样才能获得
Text t;
Graph g;
这
// Co
Text t;
Graph g;
// Co
// Co\r?\n(.*)\r?\n// Co
当有一行时有效,但不适用于多行。
答案 0 :(得分:5)
默认情况下,.
会匹配除换行符(\n
)以外的任何字符,但您也可以使用the Pattern.DOTALL
flag使其与换行符匹配。所以,例如,而不是:
final Pattern pat = Pattern.compile("// Co\r?\n(.*)\r?\n// Co");
你会用这个:
final Pattern pat = Pattern.compile("// Co\r?\n(.*)\r?\n// Co", Pattern.DOTALL);
等效地,您可以使用以下任一样式在正则表达式本身内设置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");
可让您准确控制正则表达式的哪一部分接受.
的换行符。 (但我坚持使用DOTALL
方法,除非你有一个正则表达式.
有时意味着一件事,有时候是另一件事。)
编辑添加:似乎很有可能 - 但您必须根据自己的使用情况自行确定,需要使用非贪婪量化,.*?
,而不是贪心量化,.*
。