Убрать всё, что между парами квадратных скобок
Есть строка вида "abc[a]NEED TO REMOVE THIS[a]some text[b]AND THIS[b]". Необходимо убрать всё, что заключено между парами квадратных скобок. Знаю, что решением является что-то на подобии этого: myString.replaceAll(RegExp('[*]*[*]', ''), но не знаю как правильно сделать регулярку.
Ответы (1 шт):
Автор решения: Wiktor Stribiżew
→ Ссылка
Если нужно удалить всё вместе с тегами, вы можете использовать String#replaceAll
String result = text.replaceAll(RegExp(r'\[(\w+)][^]*?\[\1]'), '');
См. пример работы выражения. Подробности:
\[- символ[(\w+)- Подмаска №1: одна и более букв, цифр или_]- символ][^]*?- ноль и более любых символов, но как можно меньше\[\1]-[, затем то же значение, что и в подмаске №1, а потом].
Если нужно удалить текст внутри тегов, но сами теги оставить, вы можете использовать String#replaceAllMapped:
final regex = RegExp(r'(\[(\w+)])[^]*?(\[\2])');
String text = "abc[a]NEED TO REMOVE THIS[a]some text[b]AND THIS[b]";
final result = text.replaceAllMapped(regex, (Match m) => "${m[1]}${m[3]}");
print(result); // => abc[a][a]some text[b][b]