import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^edit\\s(.*?)\\s\\;mode[\\S\\s]*?(?=.*?\\b(KeyWord_1|KeyWord_2|KeyWord_3|NonExistant_1)\\b)(?=.*?\\b(1|2|3|A|B|C|8|9|10|X|Y\\Z)\\b)[\\S\\s]*?exit$";
final String string = "edit GoodMatch1 ;mode\n"
+ "Something Random\n"
+ "KeyWord_2 A B and C and also D E\n"
+ "Something Random\n"
+ "Something Random\n"
+ "KeyWord_3 1 A and 2 B\n"
+ "Something Random\n"
+ "KeyWord_1 1 2 and 3 and also 4 5\n"
+ "Something Random\n"
+ "exit";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
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