import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(\\[(?<first>icode|quote|code)[^\\]]*?\\](?:[\\s]*?.)*?[\\s]*?\\[\\/(?:\\k<first>)\\])";
final String string = "[quote]Id in voluptatem [U]odit itaque[/U] ea. Qui eum [URL='http://#']fugiat[/URL] doloribus dicta nisi. [icode]Exercitationem sit error maxime aperiam quaerat hic deleniti quidem[/icode]. Totam laudantium aut quia. \"Sint ut ut vel ratione,\" Qui porro eaque enim fugit.\n"
+ "[/quote]\n\n"
+ "Quam consequatur consequatur voluptate molestiae explicabo [icode]qui consectetur[/ICODE], \"Voluptatem saepe [b]ex adipisci aut est rem[/b].\" Numquam a cupiditate non officiis sed aspernatur.\n\n"
+ "[quote=\"Lorem Ipsum, post: 12345, member: 123\"]Aut deleniti nihil sit. Saepe dolorem blanditiis nemo. Ab et cumque nesciunt. Quos velit vel nam porro.[/quote]\n\n"
+ "[spoiler=\"Name\"]Unde et eius tempore consequatur. \"Vitae est ut et,\" est numquam.\"\"[/spoiler]\n\n"
+ "Quo <span style=\"color: #24c4f9\"><b>suscipit</b></span> sequi id ratione \"doloribus omnis\".\n\n"
+ "<span style=\"font-family: 'Lucida Console'\"><span style=\"font-size: 18px\">Lorem ipsum dolor sit amet, consectetur adipiscing elit.\n"
+ "\"\n"
+ "Maecenas sed nibh ac neque semper finibus.\n"
+ "Saepe dolorem blanditiis nemo.\n"
+ "\"\n"
+ "</b></span>\n\n"
+ "[CODE=html]\n\n"
+ "Vivamus hendrerit augue \"volutpat\", consequat risus sed, dignissim orci.\n\n"
+ "Fusce sed pellentesque ipsum. Suspendisse nisi odio, gravida sed leo ut, tristique posuere felis.\n"
+ "[/CODE]\n\n"
+ "Ut tempor vestibulum viverra. Vivamus imperdiet fringilla est fermentum facilisis. Quisque nec massa sit amet augue eleifend condimentum at nec arcu.\n\n"
+ "[CENTER][B]Quam consequa[/B] \"tur c[I]onse[/I]quatur\". Eum molestias \"et\" doloribus et rem dolorem vero qui.[/CENTER]";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
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