import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?<=Total Expenses\\s+)\\$\\s[\\d,.]+";
final String string = "Return to Contents\n\n"
+ "Street Improvements\n\n"
+ "Ocotillo Road – Greenfield to Higley Project #: ST0540\n\n"
+ "Project Description:\n"
+ "Design and construction of Ocotillo Road from approximately ¼ mile east of Greenfield Road to Higley Road to\n"
+ "minor arterial standards. The project includes crossings over the Queen Creek Wash, East Maricopa Floodway,\n"
+ "Roosevelt Water Conservation District Canal and Chandler Heights Basin. The project includes the relocation of\n"
+ "69kV power lines and access into the proposed Gilbert Regional Park.\n\n"
+ "Project Information:\n"
+ "• Costs shown in prior years are for completion of an alignment study in FY 2009\n"
+ "to coordinate the alignment with Flood Control District projects\n"
+ "• Maintenance costs will be determined once final design is completed. Ongoing\n"
+ "maintenance costs will be a consideration in selection of the project design\n"
+ "• Project is necessary for growth/development and therefore is eligible for\n"
+ "System Development Fee funding\n\n"
+ "Financial Information:\n"
+ "Expenses: (1,000s) Total Prior FY 2021 FY 2022 FY 2023 FY 2024 FY 2025 Years 6- Beyond\n"
+ "Years 10 10 Yrs\n"
+ "Professional Services $ 6,104 299 5,805 - - - - - -\n"
+ "Construction Mgmt $ 4,316 33 4,283 - - - - - -\n"
+ "Land/ROW $ 2,325 - 2,325 - - - - - -\n"
+ "Construction $ 53,774 - - 53,774 - - - - -\n"
+ "Equipment & Furniture $ - - - - - - - - -\n\n"
+ "Total Expenses $ 66,519 $ 332 $ 12,413 $ 53,774 $ - $ - $ - $ - $ -\n\n"
+ "Sources: (1,000s)\n\n"
+ "2007 GO Bonds 08 $ 246 246 - - - - - - -\n"
+ "2022 Potential Street Bond $ 50,701 - - 50,701 - - - - -\n"
+ "CIP O/S Revolving Fund $ 375 86 289 - - - - - -\n"
+ "Roads SDF $ 15,197 - 12,124 3,073 - - - - -\n\n"
+ "Total Sources $ 66,519 $ 332 $ 12,413 $ 53,774 $ - $ - $ - $ - $ -\n\n"
+ "Operation and Maintenance Impact: (1,000s)\n\n"
+ "Personnel - - - - -\n"
+ "Contractual Services - - - - -\n"
+ "Supplies - - - - -\n"
+ "Utilities - - - - -\n"
+ "Insurance - - - - -\n\n"
+ "Total O&M Impact $ - $ - $ - $ - $ -\n\n"
+ "Total Revenue $ - $ - $ - $ - $ -\n\n"
+ "49";
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