import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "<p\\s*\n"
+ "(?:[^>=]|='[^']*'|=\"[^\"]*\"|=[^'\"][^\\s>]*)*?\\sclass=(['\"]?)(?:body|bodydc)\\1(?:\\s|>)\n\n"
+ "(?:([^<]*)|<(?!\\/p)(?:[^>=]|='[^']*'|=\"[^\"]*\"|=[^'\"][^\\s>]*)*>)*\n"
+ "(?=<\\/p>)\n";
final String string = "<p class=bodyDC style='text-indent:12.0pt'><span style='font-size:14.0pt;\n"
+ "mso-bidi-font-size:10.0pt' onmouseover=\" </p> \">We have no need to fear the future." So said\n"
+ "bishop-elect H. George Anderson at a news conference immediately following his election as \n"
+ "bishop of the Evangelical Lutheran Church in America. "[The\n"
+ "future] belongs to God, untouched by human hands." At the beginning of a\n"
+ "new ministry of leadership and pastoral oversight, such words from a bishop are\n"
+ "obviously designed to project confidence and a profound sense of trust in the\n"
+ "mission of the Church. They are words designed to inspire and empower the\n"
+ "people of God for ministry.<o:p></o:p></span></p>\n"
+ "Paragraph #2\n\n"
+ "<p class=BODY><span style='font-size:14.0pt;mso-bidi-font-size:10.0pt'>Ages\n"
+ "ago, another prophet of the people stood at his station and peered into the\n"
+ "future. The<span style=\"mso-spacerun: yes\"> </span>prophet Habakkuk poised on\n"
+ "the rampart, scanned the horizon for the approaching enemy he knew was coming.\n"
+ "As he waited, Habakkuk prayed to God asking why God was unresponsive to all\n"
+ "this violence and destruction. In Habakkuk chapter 2 the prophet records God's\n"
+ "answer to his questions about the future. God says to the fearful one, "For\n"
+ "there is still a vision for the appointed time;… If it seems to tarry, wait for\n"
+ "it; it will surely come, it will not delay…the righteous live by faith"\n"
+ "(2:3-4).<o:p></o:p></span></p>";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE | Pattern.COMMENTS);
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