2013-09-08 4 views
0

Я пытаюсь разбить символы строки на массив строк. Я нашел решение here.string.split ("(?! ^)") Описание

Решение идеально, но я не понимаю, как работал .split("(?!^)"). Я знаком с основами метода split(). Может ли кто-нибудь дать объяснение?

+0

Взгляните на Javadoc из класса шаблонов http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html – Julien

+1

Добро пожаловать в мир регулярных выражений – fujy

+0

Метод разделения берет представление'String 'регулярного выражения в качестве аргумента. Дополнительная информация [здесь] (http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html). Взгляните на взгляды, особенно в вашем случае. – Mena

ответ

7

(?!^) - regular expression, состоящий из negative lookahead. ^ - это anchor, используемый для обозначения начала строки. (?!^) соответствует всем строкам длины 0, за которыми не следует ^, начало строки. Другими словами, он соответствует всем 0-строчным строкам , кроме, что в начале строки.

Например, в строке abc, будет 3 совпадений: один между a и b, один между b и c, и один после c. Разделение на эти совпадения дает желаемый массив (обратите внимание, что версия с 1 аргументом split() отбрасывает любые завершающие пустые строки, поэтому ни один из них не включен в результирующий массив).

+0

Спасибо за объяснение, особенно ссылки ссылки. Моя книга никогда не охватывала этот материал, поэтому, я думаю, я не могу использовать его в классе. – kir

+0

@ user2280704 Без проблем, рад, что я мог бы помочь. Я лично никогда не буду использовать этот подход, поскольку он просто неясен и не нужен. Я бы предпочел регулярный цикл для создания массива. – arshajii

Смежные вопросы