import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^ \\h*+ \n"
+ "(?<VOTERNO> [0-9]+ ) \\h+\n"
+ "(?<SURNAME> \\S+ (?>\\h\\S+)*? ) \\h{2,}\n"
+ "(?<OTHERNAMES> \\S+ (?>\\h\\S+)*? ) \\h{2,}\n"
+ "(?<DOB> [0-9]{2}-[0-9]{2}-[0-9]{4} ) \\h+\n"
+ "(?<SEX> [FM] ) \\h+\n"
+ "(?<APPID_RECNO> [0-9A-Z/]+ ) \\h+\n"
+ "(?<VILLAGE> \\S+ (?>\\h\\S+)* ) \n"
+ "\\h* $";
final String string = " NATIONAL VOTERS' REGISTER\n"
+ " ELECTORAL COMMISSION ACT, CAP(140)\n\n\n\n\n"
+ "NVR TEXT REGISTER FOR GENERAL ELECTIONS 2015/2016\n\n\n\n"
+ " DISTRICT : 12 JOI\n"
+ " CONSTITUENCY : 035 GRGR RT\n"
+ " SUB-COUNTY : 11 GHT\n"
+ " PARISH : 01 ATZ\n"
+ " POLLING STATION : 01 OT\n\n\n\n\n"
+ " TOTAL: 398\n\n"
+ " NO OF PAGES : 9\n\n\n\n\n"
+ " THE REPUBLIC\n"
+ " NATIONAL VOTERS' REGISTER\n"
+ " ELECTORAL COMMISSION ACT, CAP(140)\n"
+ " NVR TEXT REGISTER FOR GENERAL ELECTIONS 2015/2016\n"
+ " DISTRICT : 12 JOI PARISH : 01 ATZ\n"
+ " CONSTITUENCY : 035 GRGR RT POLLING STATION : 01 OT\n"
+ " SUB-COUNTY : 11 GHT\n"
+ "VOTER NO SURNAME OTHERNAMES DOB SEX APPID/RECEIPT NO VILLAGE\n"
+ " 57534676 AAA BBB 01-01-1965 M 0323830000V0C/CM5607 ABC\n\n"
+ " 53276273 CCC DDD 28-07-1981 M 1074620203FUX/CM9007 TTR RR\n"
+ " TOTAL: 398 PAGE : 1 OF 9\n\n"
+ " THE REPUBLIC\n"
+ " NATIONAL VOTERS' REGISTER\n"
+ " ELECTORAL COMMISSION ACT, CAP(140)\n"
+ " NVR TEXT REGISTER FOR GENERAL ELECTIONS 2015/2016\n"
+ " DISTRICT : 12 JOI PARISH : 01 ATZ\n"
+ " CONSTITUENCY : 035 GRGR RT POLLING STATION : 01 OT\n"
+ " SUB-COUNTY : 11 GHT\n"
+ "VOTER NO SURNAME OTHERNAMES DOB SEX APPID/RECEIPT NO VILLAGE\n"
+ " 53390750 EEE FFF 18-04-1978 F 13238200006Z6/CF8507 TTR\n"
+ " 60977834 GGG HHH 25-05-1979 F 1176520002RK4/CF1907 BREH";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | 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