import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?<pref>京都府)?\\s*(?<city>京都市)\\s*(?<ward>[上中下左右]京区|東山区|南区)\\s*(?<street>(?!太秦安井柳通町|嵯峨中通町)(?:(?:[一-龠々ぁ-んァ-ンノ]+(?:通|筋|小路)|[一二三四五六七八九十百千]+(?:筋|本)目|[一二三四五六七八九十百千]+丁目|[東西南北]入(?:[るルル])?|[東西南北](?:裏|側)|[上下](?!丸屋町|材木町|柳町)(?:[るルル]|がる)?|[一-龠々ぁ-んァ-ンノ]+(?=\\s*(?:[東西南北]入|[上下](?:[るルル]|がる)?)))\\s*)+)?(?<town>.+)";
final String string = "京都府京都市上京区室町通一条上る小島町123-4\n"
+ "京都府京都市上京区今出川通室町西入ル紙屋川町345-5\n"
+ "京都府京都市上京区新町通丸太町下る春帯町678-6\n"
+ "京都府京都市中京区烏丸通御池下る饅頭屋町789-7\n"
+ "京都府京都市中京区三条通河原町東入ル中島町101-8\n"
+ "京都府京都市中京区御幸町通錦小路上ル船屋町202-9\n"
+ "京都府京都市中京区麸屋町通六角下る坂井町303-10\n"
+ "京都府京都市下京区四条通柳馬場西入ル立売西町404-11\n"
+ "京都府京都市下京区松原通西洞院東入ル本塩竈町505-12\n"
+ "京都府京都市下京区花屋町通松原上る柿本町606-13\n"
+ "京都府京都市左京区東大路通仁王門下る東門前町707-14\n"
+ "京都府京都市左京区北大路通下鴨本通西入ル下鴨前萩町808-15\n"
+ "京都府京都市左京区白川通今出川上る石橋町909-16\n"
+ "京都府京都市右京区西大路通御池下る西小路町111-17\n"
+ "京都府京都市上京区大宮通寺之内上る二丁目西入社横町288\n"
+ "京都府京都市上京区大宮通寺之内下る花開院町126\n"
+ "京都府京都市中京区寺町通三条上る天性寺前町535\n"
+ "京都府京都市下京区烏丸通七条下る東塩小路町590−2\n"
+ "京都府京都市中京区寺町通六角上る桜之町426番地\n"
+ "京都府京都市下京区四条通室町東入函谷鉾町78番地\n"
+ "京都府京都市上京区上ノ下立売通紙屋川東入堀川町527−26\n"
+ "京都府京都市東山区鞘町通正面下る上堀詰町265\n"
+ "京都府京都市下京区松原通西洞院東入藪下町2\n"
+ "京都府京都市下京区東中筋通花屋町下る柳町335−3\n"
+ "京都府京都市下京区東洞院通四条下る元悪王子町47−4\n"
+ "京都市中京区河原町通姉小路上ル下丸屋町408\n"
+ "京都市下京区木屋町五条上がる下材木町 447\n"
+ "京都府京都市右京区太秦安井柳通町1-1番地の4\n"
+ "京都府京都市右京区嵯峨中通町1-1番地の4\n"
+ "京都府京都市下京区六条通烏丸西入上柳町1-1番地の4\n"
+ "京都府京都市上京区中筋通智恵光院西入菱屋町1-1番地の4\n";
final String subst = "${pref}${city}${ward}${town}";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);
}
}
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