Почему regex = "" (пустой шаблон) совпадает в каждой позиции символа? - PullRequest
0 голосов
/ 25 августа 2018

у меня regex="" и String str="stackoveflow";

Я не понимаю, почему он соответствует каждому символу в строке. можешь мне объяснить?

public class test {

    public static void main(String[] args){
        Console console = System.console();
        String str="stackoveflow";          
        Pattern pattern = Pattern.compile("");
        Matcher matcher = pattern.matcher(str);
        while (matcher.find()) {
        console.format("I found the text" +
            " \"%s\" starting at " +
            "index %d and ending at index %d.%n",
            matcher.group(),
            matcher.start(),
            matcher.end());     
        }
    }
}

Вывод:

I found the text "" starting at index 0 and ending at index 0.
I found the text "" starting at index 1 and ending at index 1.
I found the text "" starting at index 2 and ending at index 2.
I found the text "" starting at index 3 and ending at index 3.
I found the text "" starting at index 4 and ending at index 4.
I found the text "" starting at index 5 and ending at index 5.
I found the text "" starting at index 6 and ending at index 6.
I found the text "" starting at index 7 and ending at index 7.
I found the text "" starting at index 8 and ending at index 8.
I found the text "" starting at index 9 and ending at index 9.
I found the text "" starting at index 10 and ending at index 10.
I found the text "" starting at index 11 and ending at index 11.
I found the text "" starting at index 12 and ending at index 12.

1 Ответ

0 голосов
/ 25 августа 2018

Pattern("") соответствует строке, состоящей из нулевых символов. Вы можете найти один из них в каждой позиции строки.

Примечание: если вы изменили find на match, вы должны обнаружить, что совпадений нет. (При match шаблон должен соответствовать всему вводу, а весь ввод не соответствует последовательности нулевых символов.)


До того, как вы отредактировали вопрос, ваш шаблон был Pattern("e*"). Это означает ноль или более повторений символа 'e'. По приведенной выше логике вы можете «найти» один из них в каждой позиции символа на входе.

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