import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:[aeAE][lI][ -])?(?:[GKQ]h?|Qu)[aeu]([tdz]{1,2}[h']?)\\1?af{1,2}[iy]";
final String string = "AI Kadafi\n"
+ "Al Gaddafi\n"
+ "Al Ghaddafi\n"
+ "Al Qaddafi\n"
+ "Al Qathafi\n"
+ "Al-Gathafi\n"
+ "Al-Kaddafi\n"
+ "El Gaddafi\n"
+ "El Kadhafi\n"
+ "El Kazzafi\n"
+ "El Qaddafi\n"
+ "El Qathafi\n"
+ "Gadaffi\n"
+ "Gadafi\n"
+ "Gadafy\n"
+ "Gaddafi\n"
+ "Gaddhafi\n"
+ "Gadhafi\n"
+ "Gathafi\n"
+ "Ghadaffi\n"
+ "Ghadafi\n"
+ "Ghaddafi\n"
+ "Ghaddafy\n"
+ "Gheddafi\n"
+ "Kad'afi\n"
+ "Kadaffi\n"
+ "Kaddafi\n"
+ "Kadhafi\n"
+ "Kazzafi\n"
+ "Khadaffy\n"
+ "Khadafy\n"
+ "Khaddafi\n"
+ "Qadafi\n"
+ "Qaddafi\n"
+ "Qadhafi\n"
+ "Qadhdhafi\n"
+ "Qadthafi\n"
+ "Qathafi\n"
+ "Quathafi\n"
+ "Qudhafi\n"
+ "al Gaddafi\n"
+ "al Ghaddafi\n"
+ "al-Gaddafi\n"
+ "al-Kad'afi\n"
+ "al-Kadafi\n"
+ "al-Khaddafi\n"
+ "al-Qadafi\n"
+ "al-Qaddafi\n"
+ "al-Qadhafi\n"
+ "al-Qadhdhafi\n"
+ "el Gaddafi\n"
+ "el Gaddafy\n"
+ "el Gadhafi\n"
+ "el Qaddafi\n"
+ "el-Gadhafi";
final String subst = "\\1\\2\\3\\3\\2\\1";
final Pattern pattern = Pattern.compile(regex);
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