Просьба помочь разобраться, вывод каких тегов работает неправильно.
По всем тестовым файлам - всё работает как должно. Но валидатор не принимает...
package com.javarush.task.task19.task1918;
/*
Знакомство с тегами
*/
import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
FileReader fileReader = new FileReader(reader.readLine());
reader.close();
StringBuilder strings = new StringBuilder();
while (fileReader.ready()) {
strings = strings.append((char)fileReader.read());
}
String s = strings.toString().replaceAll("\r\n", "");
strings = new StringBuilder(s);
fileReader.close();
String tagB = "<" + args[0] + "(.*?)>";
String tagE = "</" + args[0] +">";
// String tagB = "<" + "a" + "(.*?)>";
// String tagE = "</" + "a" +">";
Pattern patternB = Pattern.compile(tagB);
Pattern patternE = Pattern.compile(tagE);
Matcher matcherB = patternB.matcher(strings);
Matcher matcherE = patternE.matcher(strings);
int temp;
StringBuilder subStr = new StringBuilder();
while (matcherB.find() && matcherE.find()) {
subStr.delete(0,subStr.length());
int startB=matcherB.start();
matcherE.find(startB);
int endE=matcherE.end();
temp =0;
subStr.append(strings.substring(startB, endE));
Matcher matcherTemp = patternB.matcher(subStr);
while (matcherTemp.find()) {
temp++;
}
matcherTemp.reset();
if (temp != 1) {
int i = endE;
matcherTemp = patternE.matcher(strings);
matcherTemp.region(endE, strings.length());
while (matcherTemp.find() && temp != 1) {
subStr.append(strings.substring(i, matcherTemp.end()));
temp--;
i = matcherTemp.end();
}
}
System.out.println(subStr);
}
}
}