import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\A\\s*\n"
+ "(?: #########################################################################\n"
+ " # Option A: [<Addition to address 1>] <House number> <Street name> #\n"
+ " # [<Addition to address 2>] #\n"
+ " #########################################################################\n"
+ " (?:(?P<A_Addition_to_address_1>.*?),\\s*)? # Addition to address 1\n"
+ "(?:No\\.\\s*)?\n"
+ " (?P<A_House_number_1>\\pN+[a-zA-Z]?(?:\\s*[-\\/\\pP]\\s*\\pN+[a-zA-Z]?)*) # House number\n"
+ "\\s*,?\\s*\n"
+ " (?P<A_Street_name_1>(?:[a-zA-Z]\\s*|\\pN\\pL{2,}\\s\\pL)\\S[^,#]*?(?<!\\s)) # Street name\n"
+ "\\s*(?:(?:[,\\/]|(?=\\#))\\s*(?!\\s*No\\.)\n"
+ " (?P<A_Addition_to_address_2>(?!\\s).*?))? # Addition to address 2\n"
+ "| #########################################################################\n"
+ " # Option B: [<Addition to address 1>] <Street name> <House number> #\n"
+ " # [<Addition to address 2>] #\n"
+ " #########################################################################\n"
+ " (?:(?P<B_Addition_to_address_1>.*?),\\s*(?=.*[,\\/]))? # Addition to address 1\n"
+ " (?!\\s*No\\.)(?P<B_Street_name>\\S\\s*\\S(?:[^,#](?!\\b\\pN+\\s))*?(?<!\\s)) # Street name\n"
+ "\\s*[\\/,]?\\s*(?:\\sNo\\.)?\\s+\n"
+ " (?P<B_House_number>\\pN+\\s*-?[a-zA-Z]?(?:\\s*[-\\/\\pP]?\\s*\\pN+(?:\\s*[\\-a-zA-Z])?)*|[IVXLCDM]+(?!.*\\b\\pN+\\b))(?<!\\s) # House number\n"
+ "\\s*(?:(?:[,\\/]|(?=\\#)|\\s)\\s*(?!\\s*No\\.)\\s*\n"
+ " (?P<B_Addition_to_address_2>(?!\\s).*?))? # Addition to address 2\n"
+ ")\n"
+ "\\s*\\Z";
final String string = "Corso XXII Marzo 69";
final Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS);
final Matcher matcher = pattern.matcher(string);
if (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