У меня проблема с моим регулярным выражением. Я должен прочитать файл с данными контактов и импортировать его в базу данных. Строка имеет стандартный формат, и я могу прочитать все строки, извлечь имя контакта, улицу / дом, почтовый индекс и город. У меня проблема в том, что номер housenumber может быть либо числом, либо примерно таким: «7/9».
Поскольку мое регулярное выражение ожидает только число, импорт для второй альтернативы не работает из-за косой черты. Другая проблема заключается в том, что у города может быть косая черта, когда название города состоит из двух частей.
String addressPattern = "^"
+ "(?<street>(?:\\p{L}| |\\d|\\.|-)+?) "
+ "(?<number>\\d+(?: ?- \\// ?\\d+)? *[a-zA-Z]?) "
+ "(?<zip>\\d{5}) "
+ "(?<city>(?:\\p{L}| |-)+)"
+ "(?: *\\((?<suffix>[^\\)]+)\\))?" + "$";
Регулярное выражение: ^(?<street>(?:\p{L}| |\d|\.|-)+?) (?<number>\d+(?: ?- ?\d+)? *[a-zA-Z]?) (?<zip>\d{5}) (?<city>(?:\p{L}| |-)+)(?: *\((?<suffix>[^\)]+)\))?$
Вот адресная часть.
First Street 32 78224 firstCity
Second Street 7/9 73430 secondCity
Third Street 32 78224 third/City
Fourth Street 9/7 73430 fourth/city
Первый и третий примеры в порядке. Я могу читать данные. Но второе и четвертое возвращают пустую строку.
Может кто-нибудь может мне помочь?