import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?|(e)(pisodes?)|(c)(hapters?)|(c)(hs?)|(e)(ps?)|(c)(s?)|(e)(s?)|()())\\s*((\\d+(?:\\.\\d+)?(?:[A-Z]\\b)?)(?:\\s*(?:[,&+-]|and)\\s*(?:(?:e(?:pisodes?)|c(?:hapters?)|c(?:hs?)|e(?:ps?)|c(?:s?)|e(?:s?)|)\\s*)?(?4))*)";
final String string = "chapter 2A Hello \n"
+ "chapter 2AHello\n"
+ "text chapter 25.6 text\n"
+ " // c~25.6\n"
+ "text chapters 23, 24, 25 text\n"
+ " // c~23-25\n"
+ "text chapter 23, 25 text\n"
+ " // c~23 & 25\n"
+ "text chapter 23 & 24 & 25 text\n"
+ " // c~23-25\n"
+ "text c25.5-30 text\n"
+ " // c~25.5-30\n"
+ "text c99-c102 text\n"
+ " // c~99-102\n"
+ "text chapter 1 - 3 text\n"
+ " // c~1-3\n"
+ "33 text chapter 1, 2 text 3\n"
+ " // c~1-2\n"
+ "chapter 25.6 & chapter 29\n"
+ " // c~25.6 & 29\n"
+ "chapter 25+c26\n"
+ " // c~25-26\n"
+ "chapter 25 + 26 + 27\n"
+ " // c~25-27\n"
+ "chapter 10.4C\n"
+ " = c~10.4 part 3\n"
+ "chapter 2B\n"
+ " = c~2 part 2";
final String subst = "";
final Pattern pattern = Pattern.compile(regex, Pattern.UNICODE_CASE | Pattern.CASE_INSENSITIVE);
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