вот регулярное значение Вопрос в 3 пункте
("<(" + arg + ")[^>]*>.*?(<\\1>.*?</\\1>).*?(</\\1>)");
1) ("<(" + arg + ")[^>]*> отвечает за начало или
2) .*? текст Может быть а может и нет (в примере это ) Вопрос нужен, чтобы был до ближайшего следующего условия
3) (<\\1>.*?</\\1>) По уму я должен поставить после скобок *? Но когда я ставлю считает эти скобки null и все ломается вообщем .*? во втором пункте начинает много читать Забирает вообщем под себя все
4).*? тоже что и 2 пункт (в примере это )
5)(</\\1>) закрывающий тег
Мое решение должно проходить
("<(" + arg + ")[^>]*>.*?(<\\1>.*?</\\1>)*?.*?(</\\1>)");
Оно подходит ко всем вариантам
package com.javarush.task.task19.task1918;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
Знакомство с тегами
*/
public class Solution {
public static void main(String[] args) throws Exception {
String arg = args[0];
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileName = reader.readLine();
reader.close();
BufferedReader fileReader = new BufferedReader (new FileReader(fileName));
String s = "";
while (fileReader.ready()) {
s += fileReader.readLine();
}
fileReader.close();
System.out.println(s);
// Pattern pat = Pattern.compile("<(" + arg + ")[^>]*>(.*?)(<\\1>.*?</\\1>)(.*?)(</\\1>)");
Pattern pat = Pattern.compile("<(" + arg + ")[^>]*>.*?(<\\1>.*?</\\1>).*?(</\\1>)");
Matcher mat = pat.matcher(s);
while (mat.find()) {
System.out.println(mat.group());
String f = mat.group(2);
if (!(f.equals(null))) {
System.out.println(f);
}
}
}
}