我有这个字符串对象,它由标签(以 [$ 和 $] 为界)和其余文本组成。我试图隔离所有标签。(Pattern-Matcher) 正确识别所有标签,但其中两个被合并为一个。我不知道为什么会这样,可能是一些内部(Matcher-Pattern)业务。
String docBody = "This is sample text.\r\n[$ FOR i 1 10 1 $]\r\n This is" +
"[$ i $]-th time this message is generated.\r\n[$END$]\r\n" +
"[$ FOR i 0 10 2 $]\r\n sin([$= i $]^2) = [$= i i * @sin \"0.000\"" +
" @decfmt $]" +
"\r\n[$END$] ";
Pattern p = Pattern.compile("(\\[\\$)(.)+(\\$\\])");
Matcher m = p.matcher(docBody);
while(m.find()){
System.out.println(m.group());
}
output:
[$ FOR i 1 10 1 $]
[$ i $]
[$END$]
[$ FOR i 0 10 2 $]
[$= i $]^2) = [$= i i * @sin "0.000" @decfmt $]
[$END$]`
如您所见,这部分[$= i $]^2) = [$= i i * @sin "0.000" @decfmt $]
没有分成这两个标签[$= i $]
和[$= i i * @sin "0.000" @decfmt $]
有什么建议为什么会发生这种情况?