import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "((((о|е|ё)(в|ц)а?)|((ы|и)на?))|(о|а(й|к|у|ч)?)|(к((о|и)й|ая))|(и(ч|ц))|((ы|и)(х|й)|ая)|((у|ю|о)(к|н|б))|(штейн|манн?|сон))\\b";
final String string = "Смирнов/Cмиров\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"
+ "Cобчак\n"
+ "Ландау\n"
+ "Василец\n"
+ "Кучерявый\n"
+ "Бородач\n"
+ "Грицюк\n"
+ "Радаев\n"
+ "Белаец\n"
+ "Деев\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