какая строка разделяется с помощью ^ regex - PullRequest
0 голосов
/ 03 ноября 2018

Если я разделил заявление как

String array1[]= test.split("^");

что может быть возможным значением тестовой строки, чтобы это ("^") регулярное выражение разделяло тестовую строку?

Я знаю, что ^ - это специальный символ в регулярном выражении Java - это означает "соответствовать началу" ввода.

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

что может быть возможным значением тестовой строки, чтобы это ("^") регулярное выражение разделяло тестовую строку?

^ соответствует началу строки в Java.

Согласно образцу документации :

По умолчанию регулярные выражения ^ и $ игнорируют ограничители строки и совпадают только в начале и конце, соответственно, всей входной последовательности. Если активирован режим MULTILINE, то ^ совпадает в начале ввода и после любого конца строки, кроме конца ввода. В режиме MULTILINE $ совпадает непосредственно перед ограничителем строки или конец входной последовательности. (Акцент, мой)

Следовательно, следующий код выдаст следующий вывод:

Pattern pattern = Pattern.compile("^", Pattern.MULTILINE);
System.out.println(Arrays.toString(pattern.split("Test\nTest")));

Выход:

[Test
, Test]

Как видите, String успешно разделен.

0 голосов
/ 03 ноября 2018

Я считаю, что это не будет "разбивать" любую строку, и вместо этого просто будет соответствовать самому первому символу любой строки, делая длину массива 1 только исходной строкой внутри.

Это код, который я использовал для тестирования:

public static void main(String[] args) {
        List<String[]> allArrays = new ArrayList<>();

        String[] a1 = "afeafwewa".split("^");
        String[] a2 = "   fwaefawwa   ".split("^");
        String[] a3 = "fawef feawf a".split("^");
        String[] a4 = "L feawf :::".split("^");
        String[] a5 = "awefawefafewf     \\\\\\".split("^");
        String[] a6 = "\"".split("^");
        String[] a7 = "\\".split("^");

        allArrays.add(a1);
        allArrays.add(a2);
        allArrays.add(a3);
        allArrays.add(a4);
        allArrays.add(a5);
        allArrays.add(a6);
        allArrays.add(a7);

        allArrays.forEach(strings -> System.out.println(strings.length + " : " + strings[0]));
    }

Вот вывод:

1 : afeafwewa
1 :    fwaefawwa   
1 : fawef feawf a
1 : L feawf :::
1 : awefawefafewf     \\\
1 : "
1 : \

Это подтверждает, что вся строка соответствует и что расщепление не происходит.

Примечание: я проверял это и с другими строками, но я не вставил их все в этот код.

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