import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?:(?P<name>[\\p{L}\\.\\ ]+)\\n)?\n"
+ "(?:(?P<co>[\\p{L}\\.\\ \\/]+)\\n)?\n"
+ "(?P<street>[\\p{L}\\ \\p{N}’\\.]+)\\n\n"
+ "(?:(?<city>[\\p{L}\\ ]+)\\n)?\n"
+ "(?P<postal_code>[\\p{N}\\ ]+)\\ (?P<postal_city>[\\p{L}\\ ]+)(?:\\((?<province>[\\p{L}\\ ]+)\\))?\\n\n"
+ "(?P<country>[\\p{L}\\ ]+)?\n"
+ "$";
final String string = "Herr Franz Huber\n"
+ "Beethovenstrasse 12\n"
+ "1010 WIEN\n"
+ "AUSTRIA\n\n\n"
+ "Mr Willy Janssens\n"
+ "Lange Stationsstraat 352\n"
+ "3000 LEUVEN\n"
+ "BELGIUM\n\n\n"
+ "M. Emile Dubois\n"
+ "Rue du Diamant 215\n"
+ "4800 VERVIERS\n"
+ "BELGIUM\n\n\n"
+ "Mr Thor Nielsen\n"
+ "Tietgensgade 137\n"
+ "8800 VIBORG\n"
+ "DENMARK\n\n\n"
+ "Mr Torben Raldorf\n"
+ "PO Box 100\n"
+ "COPENHAGEN\n"
+ "1004 VIBORG\n"
+ "DENMARK\n\n\n"
+ "Peter Mogensen\n"
+ "c/o Fictional Company\n"
+ "Niels Bohrs Alle 23\n"
+ "Dalum\n"
+ "5230 Odense M\n"
+ "Danmark\n\n\n"
+ "Mr Asko Teirila\n"
+ "PO Box 511\n"
+ "39140 AKDENMAA\n"
+ "FINLAND\n\n\n"
+ "M. Robert MARIN\n"
+ "Rue de l’Eglise\n"
+ "Dunes\n"
+ "82340 AUVILLAR\n"
+ "FRANCE\n\n\n"
+ "Mme Marie PAGE\n"
+ "23 Rue de Grenell\n"
+ "75700 PARIS CEDEX\n"
+ "FRANCE\n\n\n"
+ "Mrs F Meier\n"
+ "Weberstr. 2\n"
+ "53113 BONNN\n"
+ "GERMANY\n\n\n"
+ "Mr P Kunde\n"
+ "Lange Str. 12\n"
+ "04103 LEIPZIG\n"
+ "GERMANY\n\n\n"
+ "Mr George Latsis\n"
+ "Alkamenou 37\n"
+ "117 80 ATHENS\n"
+ "GREECE\n\n\n"
+ "Mr Jon Jonsson\n"
+ "Einimel 80\n"
+ "107 REYKJAVIK\n"
+ "ICELAND\n\n\n"
+ "Sig. Giovanni Masci\n"
+ "via Garibaldi 27\n"
+ "47037 RIMINI RN\n"
+ "ITALY\n\n\n"
+ "M. Jaques Muller\n"
+ "71 route de Longway\n"
+ "4750 PETANGE\n"
+ "LUXEMBOURG\n\n\n"
+ "Mr J van Dieten\n"
+ "Morsstr 111\n"
+ "2312 BK LEIDEN\n"
+ "THE NETHERLANDS\n"
+ "(There should be a double space between the postcode and the post town)\n\n\n"
+ "Herr Hans Hansen\n"
+ "Svingen 22\n"
+ "9230 BEKKEHAUG\n"
+ "NORWAY\n\n\n"
+ "Senhor Carlos Manuel Pereira\n"
+ "Av das A’Augsa Livres\n"
+ "Monte Trigo\n"
+ "7220 PORTEL\n"
+ "PORTUGAL\n\n\n"
+ "Rosalina Silva\n"
+ "R Conde Redondo 80\n"
+ "1192 LISBOA CODEX\n"
+ "PORTUGAL\n\n\n"
+ "Sra Ana Jimenez\n"
+ "Mimbreras 4A\n"
+ "03201 ELCHE (Alicante)\n"
+ "SPAIN\n"
+ "(The province should be included in brackets after the town)\n\n\n"
+ "Fru Inger Lilja\n"
+ "Vasavagen 3 4tr\n"
+ "582 20 LINKOPING\n"
+ "SWEDEN\n\n\n"
+ "M. Andre Perret\n"
+ "Schanzenstrasse 7\n"
+ "3030 BERNE\n"
+ "SWITZERLAND";
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