Java регулярное выражение для замены всех, кроме первого совпадения, с условием - PullRequest
1 голос
/ 04 мая 2020

Это регулярное выражение не похоже на заменить все, кроме первого , потому что у нас есть некоторые исключительные требования ....

Код дан ... Мне нужно предоставить регулярное выражение и java replaceAll функция ....

Заданный код:

        String regex = "write regex here";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

        Scanner in = new Scanner(System.in);
        int numSentences = Integer.parseInt(in.nextLine());

        while (numSentences-- > 0) {
            String input = in.nextLine();

            Matcher m = p.matcher(input);

            // Check for subsequences of input that match the compiled pattern
            while (m.find()) {
                input = input.replaceAll("write regex", "wirte replace");
            }

            // Prints the modified sentence.
            System.out.println(input);
        }

Ввод:

2
Goodbye bye bye world world world
tim tamtim tam tam ta tam tam

Вывод :

Goodbye bye world
tim tamtim tam ta tam

Я пробовал это: (?:(\\b\\w+\\b).*)(\\b\\1\\b) и input.replaceAll(m.group(),m.group(1)) ... но это не работает для 2-го случая ... Я могу изменить только эти строки .. Может кто-нибудь помочь me.thanks

1 Ответ

1 голос
/ 04 мая 2020

Попробуйте с этим регулярным выражением: (?:(\b\w+\b))(\s*?\\b\\1\\b)+

Надеюсь, этот код поможет вам:

String regex = "(?:(\\b\\w+\\b))(\\s*?\\b\\1\\b)+";
        Pattern p = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);

        Scanner in = new Scanner(System.in);
        int numSentences = Integer.parseInt(in.nextLine());

        while (numSentences-- > 0) {
            String input = in.nextLine();

            Matcher m = p.matcher(input);

            // Check for subsequences of input that match the compiled pattern
            while (m.find()) {
                input = input.replaceAll(m.group(),m.group(1));
            }

            // Prints the modified sentence.
            System.out.println(input);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...