import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?=[<>@[\\\\^\\{~])(?<=(?<!\\\\)|(?<!\\\\)(?:\\\\{2}))(?:\\[(?:(?:\\/?(?:[\\*'bcimpstu]|com|ex|lang|ref|trn1?|!trs|su[bp]|url))|(?:m\\d|c\\x20[a-z]{3,20}|lang\\x20(?:id=\\d{1,5}|name=\"[A-Za-z]{5,22}\")|ref(?:\\x20dict=\"[^\\r\\n\"]+\")|br))\\]|[\\\\@~^]|\\{{2}[\\s\\S]*?\\}{2}|<{2}|>{2})";
final String string = "{{ Техническая часть }}\n\n"
+ "{{ / Техническая часть }}\n\n"
+ " [m0][c olive][b][com]New Heading, [p]сокр.[/p] NH[/com][/b][/c] {{ Полная и сокращенная форма заголовка }}\n"
+ " [m0][t]\\[əˈθʌˌʤʊ ˈæʧɔːʃɪŋ\\][/t] [s]sound.wav[/s] {{ Транскрипция и аудиоклип произношения }}\n"
+ " [m0][c darkviolet]I[/c] {{ Первая римская цифра }}\n"
+ " [m0][p]комп.[/p] [p]прог.[/p] [p]сущ.[/p] {{ Зона помет }}\n"
+ " [m1][c indigo]перев[']о[/']д т[']е[/']рмина п[']е[/']рвый[/c] {{ Перевод }}\n"
+ " [m0][c darkviolet]II[/c] {{ Вторая римская цифра }}\n"
+ " [m0] [p]техн.[/p] [p]гл.[/p] {{ Зона помет }}\n"
+ " [m1][c maroon][b]1.[/b][/c] [c indigo]п[']е[/']рвый перев[']о[/']д т[']е[/']рмина[/c] {{ Перевод }}\n"
+ " [m1][c maroon][b]2.[/b][/c] [c indigo]втор[']о[/']й перев[']о[/']д т[']е[/']рмина[/c] {{ Перевод }}\n"
+ " [*] • • •[/*] {{ Разгрничитель }}\n"
+ " [m1][*][s]press_brake.gif[/s][/*]\n"
+ " [m1][*][p]Аним.[/p] Схема работы. [i][c silver]Изображение: wiki.[/c][/i][/*]\n"
+ " [*] [/*]\n"
+ " [m1] Продолженние любого действия в проявленнном мире происходит в непроявленном мире. Начало любого материального действия происходит в уме, а ещё ранее — в психической сфере (то есть, в непроявленном мире). Графической схемой растения [ref dict=\"Mostitsky Universal (Ru-Ru)\"]малина[/ref] является дерево корнями вверх, кроной вниз.[/com] {{ Комментарий }}\n"
+ " [m2][*][ex]♦ Пример абстрактного предложения на тему словарной статьи. [c lightblue](Иван Петров)[/c][/ex][/*] {{ Пример }}\n"
+ " {{[!trs]}}[*] • • •[/*]{{[/!trs]}} {{ Разграничитель }}\n"
+ " [m0][*][com][p]син.[/p] <<Карточка с заголовком X>>, empty article, sample (test) card[/com][/*] {{ Зона синонимов и антонимов }}\n"
+ " [m0][*][com][p]букв.[/p] буквальный перевод; [p]этим.[/p] dummy («болванка») + entry («запись»); [p]появл.[/p] 1999[/com][/*] {{ Этимология }}\n"
+ " [m0][*]► [i][com]Wiki (Eng):[/com][/i] [url]http://en.wikipedia.org[/url][/*] {{ Внешние ссылки - на сайты }}\n"
+ " [m0][*]► [i][com]Wiki (Eng):[/com][/i] [url]{{http://}}www.en.wikipedia.org[/url][/*]\n"
+ " [m0][*]► [i][com]Сайт (Rus):[/com][/i] [url]www.goo.gl/XLFQnc[/url][/*]\n"
+ " [m0][*][p]см.[/p] <<О словаре>>[/*] {{ Внутренние ссылки. Вариант 1 }}\n"
+ " [m0][*][p]см. тж[/p] {{ Внутренние ссылки. Вариант 2 }}\n"
+ " - <<команды DSL>>\n"
+ " - [ref]вложенная карточка[/ref]\n"
+ " - <<особые статьи словаря>>\n"
+ " - <<контрольная карточка>>\n"
+ " [/*]\n"
+ " [*] [/*] {{ Картинка или фото. Вариант 1 }}\n"
+ " [m1][*][s]Photo.jpg[/s][/*]\n"
+ " [m1][*][com][p]Рис.[/p] Подпись к рисунку [i]с выделением[/i]. [i][c silver]Изображение: Имя Автора.[/c][/i][/com][/*]\n"
+ " [*] [/*] {{ Картинка или фото. Вариант 1 }}\n"
+ " [m1][*][s]MP4_video.avi[/s][/*]\n"
+ " [m1][*][com][p]Видео:[/p] Подпись к видеоклипу [i]MP4[/i]. [i][c silver]Автор: Имя Фамилия.[/c][/i][/com][/*]\n"
+ " [m1][p]▪[/p] [com][c gainsboro]05.04.2015[/c][/com] {{ Дата обработки карточки }}\n"
+ " {{ ≡05.04.2015 }} {{ Зона служебных комментариев }}\n\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html