.split()
использует регулярные выражения в качестве параметра.
Если вы ищете ссылку для регулярного выражения, это объяснит, что означают операторы и как их использовать.
Вот хороший регулярное выражение тестер, который дает контекстную помощь от операторов, как вы набираете: http://regex101.com/
Что касается вашего регулярного выражения, он ломается, как это:
"(y=)|(x\\+?)"
После обработки побега, это нарушает вниз:
(y=)|(x\+?)
()
сКАЖИТЕ регулярное выражение это match group
, это означает, что мы хотим что-то возвращается, если это может быть F ound.
(y=)
говорит, что соответствует любому литералу y=
текст был найден.
(x\+?)
говорит, что соответствует любому литералу x
, за которым следует буква +
. Однако ?
является оператором, говоря, что предыдущий символ может появляться ноль или более раз. В основном он говорит, что если есть x, сопоставьте его и любые следующие символы +
.
Поскольку вы передаете это значение split()
, метод использует эти соответствия, чтобы разбить строку на компоненты.
Говорят, что разделить строку на y=
или x[+[+[...]]]
.
В вашем случае оно разбивается на y=
и x
, что приводит к 2
и -5
.
Прочтите javaadoc класса 'Pattern'. –
'+' без обратной косой черты имеет особое значение в регулярных выражениях, поэтому '+' с обратным слэшем просто означает поиск символа '+'. Следующий символ '?' Означает, что символ '+' не является обязательным. Таким образом, один из разделителей, который он разделяет, это 'x', за которым следует' + '. – ajb
В буквальной строке '\\' просто превращается в один символ '\'. Что было бы неинтересно, если бы не целая строка была строкой «регулярного выражения». –