import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(^\\|(?<tableSeparator>[\\s\\-|]+)\\|\\n)|(^\\|\\s*(?<tableTopFirst>[^|]+)(?=.*\\n\\|\\s*-))|((?<!^)\\|(?<tableTopMiddle>[^|\\n]+)(?=\\|.*\\|\\n\\| -))|(\\|(?<tableTopLast>[^|]+)\\|\\n(?=\\|\\s*-))|(^\\|\\s*(?<tableBottomFirst>[^|]+)(?=.*\\n^[^|]))|((?<!^)\\|(?<tableBottomMiddle>[^|\\n]+)(?=\\|.*\\|\\n[^|]))|(\\|\\s*(?<tableBottomLast>[^|]+)\\|\\n(?!\\|))|(^\\|\\s*(?<tableMiddleFirst>[^|]+)(?=\\|))|(\\|\\s*(?<tableMiddleLast>[^|]+)\\|\\n)|(\\|\\s*(?<tableMiddleMiddle>[^|]+))|!?(\\[(?<text>[^(]+)]\\((?<url>[^\")]+))(\"(?<title>[^\"]+)\"|.*)\\)|((?<!-.+\\n)- (?<unorderedListFirstItem>.+)\\n)|((?<=-.+\\n)- (?<unorderedListMiddleItem>.+)\\n(?=-))|(- (?<unorderedListLastItem>.+)\\n(?!-))|((?<!\\d+\\..+\\n)\\d+\\. (?<orderedListFirstItem>.+)\\n)|((?<=\\d+\\..+\\n)\\d+\\. (?<orderedListMiddleItem>.+)\\n(?=\\d+\\.))|(\\d+\\. (?<orderedListLastItem>.+)\\n(?!\\d+\\.))|(\\*\\*\\*(?<boldAndItalic>[^*]*)\\*\\*\\*)|(\\*\\*(?<bold>[^*]*)\\*\\*)|(\\*(?<italic>[^*]*)\\*)|(~~(?<strikethrough>[^~]*)~~)|(`{3}\\n(?<multilineCode>[^`]+)`{3}\\n)|(`(?<inlineCode>[^`\\n]*)`)|(^#{6} (?<h6>.+))|(^#{5} (?<h5>.+))|(^#{4} (?<h4>.+))|(^#{3} (?<h3>.+))|(^#{2} (?<h2>.+))|(^# (?<h1>.+))|(?<horizontalLine>^-{3}\\n)|(?<=^\\n)> (?<singleLineQuote>.+)\\n(?!^>)|((?<!> .+\\n)> (?<quoteFirst>.+))|(> (?<quoteLast>.+)(?!.*\\n> .+))|(> (?<quoteMiddle>.+))|(?<lineBreak>\\n{2})";
final String string = "# Table\n"
+ "| Syntax test | Description | Test | XXX | XXX |\n"
+ "| ----------- | ----------- | ---- | --- | --- |\n"
+ "| Header | Title | AAAA | XXX | XXX |\n"
+ "| Header | Title | AAAA | XXX | XXX |\n"
+ "| Paragraph | Text | BBBB | XXX | XXX |\n\n"
+ "## Pretty table\n"
+ "|Header 1|Header 2|\n"
+ "|---|---|\n"
+ "|||\n\n"
+ "### Lists\n"
+ "---\n\n"
+ "- Inline *code* `aaaaz`\n"
+ "- My **favorite search** engine is ~~not~~ [Duck Duck Go](https://duckduckgo.com \"Click me\").\n"
+ "- ~~***Recursive***~~\n"
+ "- ***~~Recursive reversed~~***\n"
+ "- Item 4\n\n"
+ "1. Item\n"
+ "2. Item\n"
+ "3. Item\n"
+ "4. Item\n\n"
+ "1. c\n"
+ "1. c\n\n"
+ "#### Multiline code\n"
+ "```\n"
+ "int method() {\n"
+ " return 2137;\n"
+ "}\n"
+ "```\n\n"
+ "##### Quotes\n"
+ "> aa\n"
+ "> aa\n"
+ "> > bb\n"
+ "> > bb\n"
+ "> > > [c](#panes)c\n"
+ "> > > cc\n"
+ "> > bb\n"
+ "> > bb\n"
+ "> aa\n"
+ "> aa\n\n"
+ "> single line\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