之间获取代码我怎样才能得到正则表达式 - 两点意见
Text t;
Graph g;
从
// Co
Text t;
Graph g;
// Co
?
// Co\r?\n(.*)\r?\n// Co
工作时有一条线,但不适用于多行。
之间获取代码我怎样才能得到正则表达式 - 两点意见
Text t;
Graph g;
从
// Co
Text t;
Graph g;
// Co
?
// Co\r?\n(.*)\r?\n// Co
工作时有一条线,但不适用于多行。
默认情况下,.
与除换行符(\n
)之外的任何字符匹配,但您也可以使用the Pattern.DOTALL
flag使其与换行符匹配。因此,例如,而不是这样的:等价
final Pattern pat = Pattern.compile("// Co\r?\n(.*)\r?\n// Co", Pattern.DOTALL);
,您可以设置正则表达式本身内部的s
标志,使用这两种风格:
final Pattern pat = Pattern.compile("// Co\r?\n(.*)\r?\n// Co");
你会使用这个
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
办法坚持,除非你有一个正则表达式,其中.
有时意味着一两件事,有时是其他。)
编辑补充:这似乎很可能—但你必须确定这对你自己来说,根据你的使用案例—你需要用非贪心量化,.*?
,而不是贪心量化,.*
。
您确定使用它是安全的吗?如果你在字符串中有第二个// Co,该怎么办? – Tudor
// Co和// Co之间始终是var声明。 – OnTheFly