import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?m)^(\\d\\.?[\\d.]*? ?[ \\-,:\\w]+) ?\\r?$";
final String string = "5.2 Marking this is a heading\n"
+ "All relevant information, as detailed in 5.1, which is to be marked on the equipment, shall be\n"
+ "specified in the relevant product standard.\n"
+ "Markings shall be indelible and easily legible.\n"
+ "Marking of the manufacturer's name or trademark and type designation or serial number is\n"
+ "mandatory on the equipment and preferably on the nameplate, if any, in order to permit the\n"
+ "----------------------------------------------------------------------------------\n"
+ "MARKING this is a heading\n"
+ "70 General this is a subheading\n\n"
+ "70.1 Industrial control equipment shall be plainly marked with: this is a heading\n"
+ "a) The manufacturer’s name, trademark, or other descriptive marking by which the organization\n"
+ "responsible for the product may be identified – hereinafter referred to as the manufacturer’s\n"
+ "name;\n"
+ "---------------------------------------------------------------------------------\n"
+ "9 Marking this is a heading\n\n"
+ "Advisory Note: In Canada, there are two official languages, English and French. Annex C lists\n"
+ "acceptable French translations of the markings specified in this standard. All markings required\n"
+ "by this standard may have to be in other languages to conform with the language requirements\n"
+ "where the product is to be used.\n\n"
+ "9.1 General-purpose marking this is a subheading\n"
+ "In addition to the marking required for general-purpose equipment, the minimum marking shall\n"
+ "include the information in 9.2 through 9.11 as applicable. This information shall be readily visible\n\n"
+ "9.1.3 this is also a subheading\n\n"
+ "(?m)^(\\d+\\.\\d+\\s[ \\w,\\-]+)\\r?$ <--- headings\n\n"
+ "(?m)^(\\d\\.[\\d.]+ ?[ \\w]+) ?\\r?$ <--- subheadings\n\n"
+ "(?m)^(\\d\\.?[\\d.]*? ?[ \\-,:\\w]+) ?\\r?$ <--- master";
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