У меня есть этот строковый объект, который состоит из тегов (ограниченных [$ и $]) и остальной текст. Im пытается изолировать все теги. (Pattern-Matcher) правильно распознают все теги, но два из них объединены в один. Я не знаю, почему это происходит, возможно, некоторые внутренние (Matcher-Pattern) бизнес.(Pattern and Matcher), не обнаруживая совпадений всех шаблонов
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 $]
Любые предложения, почему это происходит?
Почему голос? –
-1 для [^], который a) недействителен в java и b) даже если бы он был действительным, это не решило бы проблему OP, напротив, это сделало бы ее хуже. – Ingo
@Ingo. Это абсолютно справедливо в Java. И возвращает тот же результат, что и OP. Я говорю о первом. –