Я передаю переменные в Pattern.compile () и .matcher (), но не получаю требуемый вывод - PullRequest
0 голосов
/ 11 января 2020

Я написал программу, которая запрашивает у пользователя целевую строку и шаблон для поиска в ней. Он предназначен для определения положения сопоставленного шаблона и того, сколько раз он присутствует в целевой строке. Но он всегда показывает, что шаблон не был найден, даже если шаблон присутствует в целевой строке. Я написал для нее функцию searchPattern().

    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class Main
    {
        private static Scanner sc = new Scanner(System.in);
        public static void main(String[] args)
        {

            String pattern,target;
            System.out.println("Enter Target String: ");
            pattern = sc.nextLine();
            System.out.println("Enter pattern to be searched: ");
            target = sc.nextLine();
            searchPattern(pattern,target);
        }
        public static void searchPattern(String pattern,String target)
        {
            Pattern p = Pattern.compile(pattern);
            Matcher m = p.matcher(target);
            int count = 0;
            //if(!m.find())return;
            while (m.find())
            {
                count ++;
                System.out.println(m.start() + "--" + m.end() + "--" + m.group());
            }
            if (count == 0)
                System.out.println("Your pattern was not found in the target string");
            else
                System.out.println("Total occurrences of 'ab' are" + count);

        }
    }

Она дает следующий вывод:

Enter Target String: 
ababbab
Enter pattern to be searched: 
ab
Your pattern was not found in the target string

Даже если в целевой строке присутствует «ab», почему нет? т этот код работает

1 Ответ

0 голосов
/ 11 января 2020

Вы сохраняете цель и шаблон в неправильных переменных

private static Scanner sc = new Scanner(System.in);

public static void main(String[] args) {

    String pattern, target;
    System.out.println("Enter Target String: ");
    target = sc.nextLine();
    System.out.println("Enter pattern to be searched: ");
    pattern = sc.nextLine();
    searchPattern(pattern, target);
}

public static void searchPattern(String pattern, String target) {
    Pattern p = Pattern.compile(pattern);
    Matcher m = p.matcher(target);
    int count = 0;
    while (m.find()) {
        count++;
        System.out.println(m.start() + "--" + m.end() + "--" + m.group());
    }
    if (count == 0) {
        System.out.println("Your pattern was not found in the target string");
    } else {
        System.out.println("Total occurrences of " + pattern + " are" + count);
    }
}
...