import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?sm)^\\d\\d?[.] {3,7}(.*?)(?=\\n\\n\\d\\d?\\. |\\Z)";
final String string = "INTERNATIONAL MONETARY FUND 7\n"
+ "BELGIUM\n\n\n\n"
+ "POLICY DISCUSSIONS—MAINTAINING THE REFORM\n"
+ "MOMENTUM\n"
+ "7. The current recovery is an opportunity to strengthen the resilience and growth\n"
+ "potential of the Belgian economy. The government's ability to deal with future shocks will depend\n"
+ "on whether it implements the right policies now while the economy continues to recover.\n\n"
+ " First, with public debt above 100 percent of GDP and only starting to come down, Belgium still\n"
+ " has a long way to go to rebuild buffers and achieve a more sustainable fiscal position. This will\n"
+ " require following through on plans to gradually move toward structural balance.\n\n"
+ " Second, with real GDP growth projected at only around 1½ percent for the foreseeable future,\n"
+ " further labor and product market reforms are needed to increase productivity growth, raise\n"
+ " potential output, and integrate vulnerable groups into the labor market.\n\n"
+ " Third, although the financial sector has recovered since the crisis and is generally sound, cyclical\n"
+ " vulnerabilities are rising and new challenges are emerging, suggesting the need for vigilance\n"
+ " and proactive policies.3\n\n"
+ "8. The government agreed last summer on a new package of measures related to\n"
+ "taxation, the labor market, and social benefits (Table 2 and Box 1). The most notable reform was\n"
+ "a reduction in Belgium's corporate income tax (CIT) rate from 34 percent to 25 percent, to be\n"
+ "phased in over the next three years (SMEs will benefit from a reduced rate of 20 percent starting in\n"
+ "2018). To compensate for the resulting revenue loss, the notional interest rate deduction (NID) was\n"
+ "modified to apply only to incremental corporate equity rather than to the total stock, and new anti-\n"
+ "tax avoidance measures were introduced consistent with Belgium's EU obligations.4 Together, the\n"
+ "measures are designed to enhance Belgium's competitiveness while preserving revenue neutrality.\n\n"
+ "9. Policy discussions focused on the importance of maintaining the reform momentum\n"
+ "and not yielding to complacency. Achieving the balanced budget goal will require efforts at all\n"
+ "levels of government to make spending more efficient and safeguard revenues (Section A).\n"
+ "A combination of policies and reforms could help raise productivity growth, including increasing\n"
+ "investment in infrastructure and enhancing competition in services (Section B). To fully realize\n"
+ "Belgium's employment potential, it will be critical to address the severe fragmentation of the labor\n"
+ "market (Section C). To preserve financial stability, the authorities should address vulnerabilities in the\n"
+ "mortgage market and carefully navigate the transition toward a European Banking Union (Section D).\n\n\n\n\n"
+ "3\n"
+ " A comprehensive assessment of Belgium's financial sector took place in 2017 under the Financial Sector\n"
+ "Assessment Program (FSAP).\n"
+ "4\n"
+ " The NID aims to neutralize the CIT treatment of debt and equity by supplementing the deductibility of interest with\n"
+ "a deduction that is the product of corporate equity and a notional interest rate.\n\n\n"
+ "8";
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