Таким образом, регулярные выражения, похоже, совпадают при максимально возможном совпадении. Например:
public static void main(String[] args) {
String s = "ClarkRalphKentGuyGreenGardnerClarkSupermanKent";
Pattern p = Pattern.compile("Clark.*Kent", Pattern.CASE_INSENSITIVE);
Matcher myMatcher = p.matcher(s);
int i = 1;
while (myMatcher.find()) {
System.out.println(i++ + ". " + myMatcher.group());
}
}
генерирует вывод
- ClarkRalphKentGuyGreenGardnerClarkSupermanKent
Я хотел бы этот вывод
- ClarkRalphKent
- ClarkSupermanKent
Я пробовал такие паттерны как:
Pattern p = Pattern.compile("Clark[^((Kent)*)]Kent", Pattern.CASE_INSENSITIVE);
это не работает, но вы понимаете, что я пытаюсь сказать. Я хочу, чтобы строка от Кларка до Кента не содержала ни одного появления Кента.
Эта строка:
ClarkRalphKentGuyGreenGardnerBruceBatmanKent
должен генерировать вывод
- ClarkRalphKent