import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(^|\\R)((.*(\\b|\\.))\\s-\\s\\b(.*(\\b|\\.)))(\\R|$)";
final String string = "Одесса - Москва\n\n"
+ "Москва - Одесса\n\n"
+ "Абу куку ари гами - Салат\n\n"
+ "Салат - Абу куку ари гами\n\n"
+ "Абакан - Алтайская\n\n"
+ "Вязовая - Золотинка\n\n"
+ "Кемь - Семигородная\n\n"
+ "Можга - Иланская\n\n"
+ "Ясногорск - Тарбагатай\n\n"
+ "Выя - рзд.135км\n\n"
+ "134 - 8787\n\n"
+ "134 км - 8787\n\n"
+ "Кежемская - Сальск\n\n"
+ "Вышний Волочёк - Санкт-Петербуг\n\n"
+ "Кежемская - Зимовники\n\n"
+ "Могойтуй - Тинская\n\n"
+ "Пыть-Ях - Усть-Юган\n\n"
+ "Торбеево - Сызрань\n\n"
+ "Ясная - Забайкальск\n\n"
+ "Вышний Волочёк - Санкт-Петербург\n\n"
+ "Могойтуй - Улан-Удэ\n\n"
+ "Улан-Батор - Балезино\n\n"
+ "Ангарск - Номжа\n\n"
+ "Дальнереченск - Находка\n\n"
+ "Коксу - Сеятель\n\n"
+ "Неверовская - Ульба-Перевалочная\n\n"
+ "Россошь - Моздок\n\n"
+ "Улан-Батор - Барабинск\n\n"
+ "Ангарск - рзд.№71\n\n"
+ "Остров Н.О. - рзд.303км\n\n"
+ "рзд.303км - Аксака\n\n"
+ "Гротовский - Семиглавый Мар\n\n"
+ "Княжая - Масельская\n\n"
+ "Мюд - Кесова Гора\n\n"
+ "рзд.Туюн - Уркальту\n\n"
+ "Тяжин - Чильчи\n\n"
+ "Мюд - Москва\n\n"
+ "Вязьма - Остров Н.О.\n\n"
+ "Москва - Берлин\n\n"
+ "Кенада - рзд.303км";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE | 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