Строка Java - получает все между (но не включая) два регулярных выражения?

Чтобы начать сеанс, вам нужно использовать

zend\session\container
11
задан 7 June 2009 в 15:41
поделиться

2 ответа

Напишите такое регулярное выражение:

"(regex1)(.*)(regex2)"

... и потяните извлеките среднюю группу из сопоставителя (для обработки новой строки в шаблоне вы хотите использовать Pattern.DOTALL ).

Используя ваш пример, мы можем написать такую ​​программу, как:

package test;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Regex {

    public static void main(String[] args) {
        Pattern p = Pattern.compile(
                "<row><column>(.*)</column></row>",
                Pattern.DOTALL
            );

        Matcher matcher = p.matcher(
                "<row><column>Header\n\n\ntext</column></row>"
            );

        if(matcher.matches()){
            System.out.println(matcher.group(1));
        }
    }

}

Которая при запуске выводит :

Header


text
24
ответ дан 3 December 2019 в 03:53
поделиться

Вы не должны использовать регулярные выражения для декодирования XML - это в конечном итоге сломается, если ввод не будет строго контролироваться.

Самый простой способ - это, вероятно, проанализировать XML в дереве DOM (Java 1.4 и новее содержат XML анализатор напрямую), а затем перейдите по дереву, чтобы выбрать то, что вам нужно.

Может быть, вы хотите сказать, чего вы хотите достичь с помощью своей программы?

2
ответ дан 3 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: