В тестовом варианте вывод совпадает с требованием, при этом валидатору мой подход не по душе.
Прошу подсказать где я допустил ошибку.
package com.javarush.task.task19.task1918;
/*
Знакомство с тегами
*/
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) throws IOException{
String tag = "<" + args[0];
String antiTag = "/" + tag + ">";
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String file = reader.readLine();
reader.close();
FileReader fReader = new FileReader(file);
StringBuffer sb = new StringBuffer();
while (fReader.ready()) sb.append((char)fReader.read());
fReader.close();
String input = sb.toString();
input.replaceAll("[\n\r]", "");
//test
// String input = "Info about Leela <span xml:lang=»en» lang=»en»><b><span><span>Turanga</span> Leela</span></b></span>\n" +
// "<span>Super</span><span>girl</span>";
// String tag = "<span";
// String antiTag = "/span>";
matchMaker(input, tag, antiTag);
}
public static void matchMaker(String input, String tag, String antiTag) {
Pattern pattern = Pattern.compile("(" + tag + ".*?" + "(("+tag+".*"+antiTag+").*?)*?" + antiTag + ")");
Matcher matcher = pattern.matcher(input);
String check;
while (matcher.find()) {
check = matcher.group();
System.out.println(check);
if (matcher.group(2)!=null)
{
matchMaker(matcher.group(2), tag, antiTag);
}
}
}
}