Java: регулярное выражение для удаления вики-разметки списков

Я читаю XML-файл Википедии, в котором я должен удалить все, что является элементом списка. Например, для следующей строки:

String text = ": definition list\n
** some list item\n
# another list item\n
[[Category:1918 births]]\n
[[Category:2005 deaths]]\n
[[Category:Scottish female singers]]\n
[[Category:Billy Cotton Band Show]]\n
[[Category:Deaths from Alzheimer's disease]]\n
[[Category:People from Glasgow]]";

Здесь я хочу удалить *,# а также :, но не тот, где говорится категория. Вывод должен выглядеть так:

String outtext = "definition list\n
some list item\n
another list item\n
[[Category:1918 births]]\n
[[Category:2005 deaths]]\n
[[Category:Scottish female singers]]\n
[[Category:Billy Cotton Band Show]]\n
[[Category:Deaths from Alzheimer's disease]]\n
[[Category:People from Glasgow]]";

Я использую следующий код:

Pattern pattern = Pattern.compile("(^\\*+|#+|;|:)(.+)$");
            Matcher matcher = pattern.matcher(text);
            while (matcher.find()) {
                String outtext = matcher.group(0);
                outtext = outtext.replaceAll("(^\\*+|#+|;|:)\\s", "");
                return(outtext);
                } 

Это не работает. Подскажите, пожалуйста, как мне это сделать?

1 ответ

Решение

Это должно работать:

text = text.replaceAll("(?m)^[*:#]+\\s*", "");

Важно использовать (?m) за MULTILINE здесь режим, который позволяет вам использовать привязки начала / конца строки для каждой строки.

ВЫХОД:

definition list
some list item
another list item
[[Category:1918 births]]
[[Category:2005 deaths]]
[[Category:Scottish female singers]]
[[Category:Billy Cotton Band Show]]
[[Category:Deaths from Alzheimer's disease]]
[[Category:People from Glasgow]]
Другие вопросы по тегам