import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(?:[A-Z] \\d|[^\\W\\d_]{2,}\\.?)(?:[- '’][^\\W\\d_]+\\.?)*$";
final String string = "########### Absolutly Fine ################\n"
+ "Mainstreet. 12\n"
+ "mainstreet 1\n"
+ "Mainstreet 12a\n"
+ "Main Street 12A\n"
+ "Big New mainstreet 12a\n"
+ "Mainstreet-New 12b\n"
+ "Mains Str. 12z\n"
+ "St. Alexander Street 121 b\n"
+ "Übermorgen Straße 56/58\n"
+ "John Kennedy Street 56/58a\n"
+ "Bahnhofstr. 56-58\n"
+ "Leonhard-Eck-Str. 56 - 58\n"
+ "Älterweg 56-58a\n"
+ "Graf-Anton-Weg 1234\n"
+ "Alexanderstraße 56/58a\n"
+ "Prof.-Ernst-Nathan-Straße 18a - 19b\n"
+ "Prof.-Albert-Einstein-Weg 18a-19b\n"
+ "Prof. Ernst-Nathan-Straße 12\n"
+ "Prof. Albert-Einstein-Weg 15a\n\n\n"
+ "######## Not okay ################\n"
+ "Mainstreet\n"
+ "A\n"
+ "B\n"
+ "Z\n"
+ "A 1\n"
+ "B 2\n"
+ "Z 99\n"
+ "Mainstreet #+;:_*´`?=)(/&%$§!\n"
+ "Mainstreet#+;:_*´`?=)(/&%$§!\n"
+ "Mainstreet 2\n"
+ "Mainstreet..\n"
+ "Mainstreet§\n"
+ "Mainstreet 12345\n"
+ "Mainstreet 25-ab\n"
+ "Mainstreet 12ü\n"
+ "Mainstreet 12_\n"
+ "Mainstreet 12!\"§$$%&/()\n"
+ "Mainstreet a2\n"
+ "Mainstreet 13àâäèéêë\n"
+ "Mainstreet 0\n"
+ "Mainstreet 123aaa123,\n"
+ "Mainstreet 123 aaa 123\n"
+ "Mainstreet 1a 1\n"
+ "Mainstreet 1a 1'\n"
+ "Mainstreet 1a1\n"
+ "Mainstreet 00 a\n"
+ "Mainstreet 0a\n";
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