import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^([A-Za-z \\t]*)```([A-Za-z]*)?\\n([\\s\\S]*?)```([A-Za-z \\t]*)*$";
final String string = "Markdowndown code blocks work with triple `'s\n\n"
+ "This pattern matches prefix, syntax, contents, and postfix\n\n"
+ "Like this `\\`\\`\\`` or \"```\" or ``` inline blocks are like this `code here`\n\n"
+ "x```js\n"
+ "asdf\n"
+ "```\n\n"
+ "```\n"
+ "test\n"
+ "```\n\n"
+ "Indented\n\n"
+ " ```\n"
+ " test\n"
+ " ```\n\n"
+ "```js\n"
+ "xyz\n"
+ "```\n\n"
+ "Indented with syntax\n\n"
+ " ```js\n"
+ " xyz\n"
+ " ```\n\n"
+ "With code content\n\n"
+ "```js\n"
+ "const foo = () => {}\n"
+ "```\n\n"
+ "Postfix\n\n"
+ "```js\n"
+ "const foo = () => {}\n"
+ "```x\n\n"
+ "With internal ticks\n\n"
+ "```js\n"
+ "// comment `\n"
+ "const foo = `lol\n"
+ " cool with ticks \\`\\`\\`\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