Проблемы с узором - PullRequest
       4

Проблемы с узором

0 голосов
/ 15 апреля 2011

У меня есть шаблон Java, который я хотел бы сопоставить. Я хочу, чтобы мой первоначальный паттерн соответствовал первому его появлению. Тем не менее, я считаю

public static void main(String[] args)
    {
        final String expression = "(\\s*(a{1}\\s*b{1})\\s*)";

        Scanner scanner1 = new Scanner(" ab");
        //should be rejected
        Scanner scanner2 = new Scanner("cab");

        System.out.println(scanner1.findWithinHorizon(expression, 0));
        System.out.println(scanner2.findWithinHorizon(expression, 0));
    }

Когда я запускаю приведенный выше код, я получаю следующий вывод:

ab
ab

Я пытался изменить шаблон для использования неохотных и притяжательных квантификаторов, но ни один из них, похоже, не дает ожидаемых результатов. Что я тут не так делаю?

1 Ответ

1 голос
/ 15 апреля 2011

Я предполагаю, что вы хотите сопоставлять только "ab", а не "cab" или "c ab", поэтому используйте это регулярное выражение для начала в начале строки: final String expression = "^(\\s*(a{1}\\s*b{1})\\s*)";

Если вы также хотите сопоставить «c ab», но не «cab», попробуйте это: final String expression = "((?<!\\w)\\s*(a{1}\\s*b{1})\\s*)";

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...