Я читаю XML-файл wikipedia, в котором мне нужно удалить что-либо между фигурными фигурными скобками. . Для следующей строки:Java: Regex для удаления частей XML-файла
Строка текста = «{{Использование даты DMY | дата = ноября 2012}} {{Infobox музыкальный художник < - Смотрите Википедия: WikiProject_Musicians - > | имя
= Russ Conway | image = | caption = Russ Conway, изображенный на его 1959 году [[Расширенная игра | EP]] '' Подробнее Party Pops ''. | Image_size = | background = non_vocal_instrumentalist | имя_ рождения = Тревор Герберт Стэнфорд | alias = | birth_date = {{birth date | 1925 | 09 | 2 | df = y}} | birth_place = [[Bristol]], [[Англия]], Великобритания | death_date = {{dea го даты и возраст | 2000 | 11 | 16 | 1925 | 09 | 02 | df = y}} | death_place = [[Истбурн]], [[Сассекс]], Англия, Великобритания | origin = | instrument = [[Piano]] | жанр = | род занятий = [[Музыкант]] | years_active = | label = EMI (Колумбия), Pye, MusicMedia, Черчилль | linked_acts = | сайт = | notable_instruments =}} ";
Оно должно быть заменено пустой строкой Обратите внимание, что пример имеет несколько новых линии и вложенное {{...}}
Я использую следующий код.:
Pattern p1 = Pattern.compile(".*\\({\\{.+\\}\\}).*", Pattern.DOTALL);
Matcher m1 = p1.matcher(text);
while(m1.find()){
String text1 = text.replaceAll(m1.group(1), "");
}
Я новичок в регулярных выражений, пожалуйста, вы можете сказать, что я делаю неправильно?
Вы должны попытаться найти правильный синтаксический анализатор. Регулярное выражение Java не предназначено для неопределенных уровней вложенности. То, что вы делаете неправильно, состоит в том, что '. +' Является жадным и будет соответствовать после первого '{{' до последнего '}}'. – Jerry
У вас есть все теги, но язык программирования, который вы используете. – devnull
@Jerry Это то, что я хочу, удалить все, что находится между первым '{{' и last '}}' – Angad