Регулярное выражение для строки с тегами

Мне нужна помощь. Я не знаю, как сделать шаблон.

String text  = "<h1 align=\"center\">Как поймать льва?</h1>\n <h2 align=\"right\">Метод перебора</h2>";

У меня есть строка, и мне нужно создать шаблон для разделения всех тегов. Итак, результат должен быть:

<h1> align = "right" </h1> <h2> align = "center" </h2>

Делаю проект для компании. Я пытался найти что-нибудь в их блоге об этой проблеме, но не смог.

Pattern pattern = Pattern.compile("(<)[^\b\"](>)");
Matcher matcher = pattern.matcher(text);
while(matcher.find())
    System.out.println(matcher.group());

Так что я попробовал это, но результат всегда ложный

Я не уверен, почему вы ссылаетесь на этот конкретный корпоративный (например, нетехнический) блог. Это делает ваш вопрос похожим на завуалированную попытку SEO или, что еще хуже, на спам.

Federico klez Culloca 10.12.2020 11:31

Мне нужно только регулярное выражение, обычный инструмент для строк

Jonas Kleiber 10.12.2020 11:33

@FedericoklezCulloca, но, может быть, ты знаешь ответ на мой вопрос? Как разделить теги с помощью регулярных выражений

Jonas Kleiber 10.12.2020 11:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
4
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы хотите видеть <h1> в своем результате, но в исходном вводе есть не только этот тег. У вас есть <h1 и </h1>. Насколько я понимаю, вам нужна дополнительная проверка вашего результата.

    String text = "<h1 align=\"center\">Как поймать льва?</h1>\n <h2 align=\"right\">Метод перебора</h2>";
    String regex = "(?<=\\<)(.*?)(?=\\>)";
    
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(text);
            
    while(matcher.find())
    {               
        if (matcher.group().contains(" = "))
        {
            String tag = matcher.group().substring(0,2);                
            System.out.println("<" + tag + ">" + matcher.group().substring(2, matcher.group().length()) + " </" + tag + ">");
        }           
    }   

Результат:

<h1> align = "center" </h1>
<h2> align = "right" </h2>

Другие вопросы по теме