Попробовал с некоторыми каверзными файлами из советов:
<a
>asd</a>
<tag><tag><tag><tag></tag></tag></tag></tag>
со всеми получается ожидаемый результат, но Валли не принимает решение.package com.javarush.task.task19.task1918;
/*
Знакомство с тегами
*/
import java.io.*;
import java.util.Stack;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public static void main(String[] args) {
String tag = args[0];
String openTag = "<" + args[0];
String closeTag = "</" + args[0] + ">";
String fileName = "";
try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
fileName = reader.readLine();
} catch (IOException e) {
e.printStackTrace();
}
//fileName = "d:/qq.txt";
String text = "";
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) {
StringBuilder sb = new StringBuilder("");
reader.lines().forEach(line -> {
sb.append(line).append("\n");
});
text = sb.toString();
} catch (IOException e) {
e.printStackTrace();
}
Stack<Integer> stack = new Stack<>();
Pattern pattern = Pattern.compile(tag);
Matcher matcher = pattern.matcher(text);
while (matcher.find()) {
if (text.substring(matcher.start() - 1, matcher.end()).equals(openTag)) {
stack.push(matcher.start() - 1);
} else if (text.substring(matcher.start() - 2, matcher.end() + 1).equals(closeTag)) {
int start = stack.pop();
System.out.println(text.substring(start, matcher.end() + 1));
}
}
}
}